【问题标题】:App crashing when open map in dialog在对话框中打开地图时应用程序崩溃
【发布时间】:2017-07-09 13:15:24
【问题描述】:

我有自定义对话框,我想在对话框中显示地图,它工作正常,但是当我第二次显示我的应用程序崩溃时,我卡在它很多天,请大家帮忙解决它!

我的代码在下面

<fragment
            android:id="@+id/mGoogleMap"
            android:name="com.google.android.gms.maps.SupportMapFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

MainActivity.java

private void showMapDialog() {
        mDialog = new Dialog(MainActivity.this);
        mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        mDialog.setContentView(R.layout.dialog_map_view);

        mDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialog) {
                mIsDialogueClick = false;
            }
        });

        mDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                mIsDialogueClick = false;
            }
        });

        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.mGoogleMap);
        if (mMap == null) {
            mapFragment.getMapAsync(this);
        }
        if (mDialog != null && !mDialog.isShowing()) {
            mDialog.show();
            mIsDialogueClick = true;
        }
//        mDialog.show();
    }

在 onMapReady 方法中,我正在显示当前位置的标记

我的错误日志如下

02-20 15:35:41.356 23874-23874/com.example E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                  Process: com.example, PID: 23874
                                                                                  android.view.InflateException: Binary XML file line #43: Error inflating class fragment
                                                                                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
                                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
                                                                                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
                                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                                      at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
                                                                                      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:407)
                                                                                      at android.app.Dialog.setContentView(Dialog.java:490)
                                                                                      at com.example.forms.MainActivity.showMapDialog(MainActivity.java:614)
                                                                                      at com.example.forms.MainActivity.access$600(MainActivity.java:49)
                                                                                      at com.example.forms.MainActivity$3.onClick(MainActivity.java:274)
                                                                                      at android.view.View.performClick(View.java:4788)
                                                                                      at android.view.View$PerformClick.run(View.java:19923)
                                                                                      at android.os.Handler.handleCallback(Handler.java:739)
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                      at android.os.Looper.loop(Looper.java:135)
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:5382)
                                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                                      at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:928)
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:723)

【问题讨论】:

  • 发布您的错误日志
  • 我更新了日志
  • MainActivity.java:614 行是什么?
  • 即mDialog.setContentView(R.layout.dialog_map_view);
  • 使用 mapView 代替地图片段,对你有帮助。

标签: android google-maps dialog currentlocation


【解决方案1】:

viewpager 中的地图出现了同样的错误。因为您使用对话框充气地图,然后再次打开它,对话框将再次充气地图(片段管理器将添加相同的 id/tag)。您无需多次创建新对话框

 mDialog = new Dialog(MainActivity.this);
        mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        mDialog.setContentView(R.layout.dialog_map_view);

当你想显示你的对话框时,你可以将上面的代码移动到外部方法showMapDialog(),只需创建1次。

【讨论】:

    【解决方案2】:

    试试这个:overWrite onDestroy() 方法:并删除你之前的片段

     @Override
    public void onDestroy() {
        super.onDestroy();
        getFragmentManager().beginTransaction().remove(mapfragment_name).commit();
    }
    

    如果您使用支持库,请改用getSupportFragmentManager()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 2023-03-23
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多