3

Je voudrais créer mon propre snackbar qui étend la classe Fragment. Mais je ne suis pas sûr de fermer fragment après quelques secondes. Parce que je l'aide hanlder fermer fragment comme celui-ci:Fermer le fragment dans hanlder

private Runnable run = new Runnable() { 
     @Override 
     public void run() { 
      Fragment frag = getActivity().getSupportFragmentManager().findFragmentByTag(TAG); 
      if(frag != null) { 
       getActivity().getSupportFragmentManager().popBackStackImmediate(TAG, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
      } 
     } 
    }; 

Je connais une vaste bibliothèque mais je avais besoin sur mesure snackbars. Parfois, je reçus:

> android.support.v4.app.FragmentActivity.getSupportFragmentManager()' 
> on a null object reference 

[Edit:] Méthode

onPause() J'ai appelé:

@Override 
    public void onPause() { 
     super.onPause(); 
     handler.removeCallbacksAndMessages(null); 
    } 
+0

Nullpointer est causée par 'getActivity()' retour nul. Peut-être parce que vous avez fermé cette activité. Mais j'ai oublié d'enlever le runnable de votre gestionnaire. Donc, il est toujours exécuté, même si l'activité n'existe plus – AlbAtNf

+0

il semble que l'application se bloque, mais le gestionnaire continue d'aller et se bloque aussi. – Michael

Répondre

1

Si votre fragment est pas attaché plus, getActivity peut retourner null.

Assurez-vous de vérifier si le fragment en cours est ajouté et non individuelle avec

isAdded() && !isDetached()

+0

Oui, c'est une bonne idée. Mais que se passe-t-il lorsque l'application va s'écraser? – Michael

+0

Il s'est écrasé car 'getActivity' a renvoyé la valeur null. Ensuite, vous avez essayé d'appeler 'getSupportFragmentManager' sur un objet nul. Qui va lancer une exception de pointeur nul –

+0

Je vais vérifier si 'isAdded() &&! IsDetached()' sera utile. Merci, je vais vous faire savoir – Michael