2017-02-20 35 views
0

У меня есть настраиваемый диалог, я хочу показать карту в диалоговом режиме, она работает нормально, но когда я показываю второй раз, в то время мое приложение рушится, я застрял в нем из многих дней, пожалуйста, ребята помогите решить это !!!Ошибка приложения при открытии карты в диалоговом окне

Мой код ниже

<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) 
+0

опубликовать журнал ошибок – Piyush

+0

я обновленный журнал –

+0

, что является 'MainActivity .java: 614' line? – rafsanahmad007

ответ

0

У меня была такая же ошибка с картой в viewpager. Поскольку вы используете диалог, чтобы раздуть карту, и вы снова откроете ее, диалог снова раздует вашу карту (менеджер фрагментов добавит один и тот же идентификатор/тег). Что вам не нужно создавать новый диалог нескольких временных

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 раз.

+0

Спасибо, он работает на меня !!! –

2

попробовать это: перезапись onDestroy() метод: и удалить ваш предыдущий фрагмент

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

если и используют использование библиотеки поддержки getSupportFragmentManager() вместо