2017-05-16 3 views
0

Voici des étapes simples.Y a-t-il un moyen de détecter si un fragment est montré à l'utilisateur ou non?

step1 : fragment1 was showing and it's already added to Backstack 
step2 : fragment2 is added to Backstack and showing it now 
step3 : fragment2 is removed from Backstack 

Donc finalement, fragment1 est montrant à nouveau à l'utilisateur. Dans cette situation, y a-t-il un moyen de détecter si le fragment1 est de nouveau affiché fragment1? J'ai essayé avec OnResume() mais cela ne fonctionne pas.

Merci pour les réponses!

Répondre

1
Fragment currentFragment = getFragmentManager().findFragmentById(R.id.fragment_container); 

if (currentFragment instanceof YourFragment) { 

if(currentFragment.this.isVisible()) 
{ 
    //your code 
} 
} 
+0

Là où je ne dois ajouter votre code? S'il vous plaît relisez ma question. Je veux le détecter dans un fragment qui montre maintenant. –

+1

@ Passionate.C Je crois qu'il a répondu à votre question. Votre code va dans la seconde instruction if. c'est-à-dire. this.isVisible() – KBJ

+0

KBJ oui. Cela semble être une bonne solution. Mais je ne suis pas sûr d'où je peux ajouter ... –

0

Essayez le onAttach() si le fragment est affiché. onDetach() est de détecter si le fragment quitte l'interface utilisateur.

Par exemple: vous avez 3 fragment (frag1, frag2, frag3), chaque fragment dont vous avez besoin de mettre le onAttach()

frag1 
@Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     Toast.makeText(context, "I'm frag 1", Toast.LENGTH_SHORT).show(); 
    } 
+0

Merci pour votre réponse! mais cela ne fonctionne pas. –

1

Lorsque vous ajoutez le fragment dans votre transaction, vous devez utiliser une balise.

fragTrans.replace(android.R.id.content, myFragment, "MY_FRAGMENT"); 

... et plus tard si vous voulez vérifier si le fragment est visible:

MyFragment myFragment = (MyFragment)getFragmentManager().findFragmentByTag("MY_FRAGMENT"); 
if (myFragment != null && myFragment.isVisible()) { 
    // add your code here 
} 

Voir aussi http://developer.android.com/reference/android/app/Fragment.html


Je viens de copier cette réponse https://stackoverflow.com/a/9295085/7232310 parce que je pense est ce dont vous avez besoin. Sinon, vous pouvez vérifier les réponses suivantes sur la même question.

J'espère que ça aide!

+0

oui. ça aide mais il faut ajouter du code à Activity ou quelque chose qui gère les fragments. Je veux détecter dans fragment1. –

0

Je pense qu'il ya 2 options

Essayez de passer outre ce comportement et voir si cela fonctionne

void onHiddenChanged (boolean hidden) 

Selon documenté here

ou autre option est de onStart()/onResume() rappel du cycle de vie essayer d'observer le comportement de l'état de visibilité des fragments.

boolean isVisible() 

Selon documenté here

+0

merci, mais ne fonctionne pas –

+0

Si vous pouvez déposer des extraits de code nous aidera à jouer sur ce problème et corriger. –