0

Dans mon application, j'utilise google map au fragment. J'utilise ce code pour ajouter fragment s.Android Fragment - Application s'est écrasé après la fermeture de l'application

public void addPage(final BaseFragment pBaseFragment, final boolean isAddToBackStack){ 
      FragmentTransaction transaction = mFragmentManager.beginTransaction(); 
      transaction.add(R.id.content_frame, pBaseFragment); 
      if (isAddToBackStack) transaction.addToBackStack(null); 
      transaction.commit(); 
    } 

Dans MyMapFragment Je l'appelle pour enlever la carte (Si je ne le fais pas, je suis double id pour exception carte)

public void onDestroyView() { 
     super.onDestroyView(); 
     Fragment fragment = (getFragmentManager().findFragmentById(R.id.map_n)); 
     FragmentTransaction ft = mActivity.getSupportFragmentManager().beginTransaction(); 
     ft.remove(fragment); 
     ft.commit(); 
    } 

mais quand je presse bouton retour et l'application I est fermé obtenu cette erreur. (Dans la ft.commit ligne())

Caused by: java.lang.IllegalStateException: Activity has been destroyed 
      at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1365) 
      at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595) 
      at android.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:578) 

Quelqu'un pourrait me dire ce qui est ici la solution comment éviter cette erreur, je l'ai déjà bloqué sur ces 3 jours.

+0

peu hors sujet - [concassée vs Crashed] (http://www.english-test.net/forum/ftopic11162.html) pour l'enregistrement de référence [cette ] (http://stackoverflow.com/questions/15207305/getting-the-error-java-lang-illegalstateexception-activity-has-been-destroyed) – Skynet

Répondre

3

Essayez de cette façon:

@Override 
    public void onDestroyView() 
    { 
     try{ 
      SupportMapFragment fragment = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map_n)); 
      FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); 
      ft.remove(fragment); 
      ft.commit(); 
     }catch(Exception e){ 
     } 
     super.onDestroyView(); 
    } 
+1

c'est génial. Je n'ai jamais pensé faire comme ça. Mais de toute façon cela a fonctionné. Merci beaucoup. – pmb

+0

@pmb yo Bienvenue compagnon! –

Questions connexes