2017-09-01 2 views
0

Le bouton Précédent/Haut de la barre d'outils de mon fragment fonctionne très bien pour afficher le fragment lorsque l'utilisateur clique dessus, mais lorsque je simule Android, le processus est masqué. en le restaurant, le bouton ne déclenche plus la méthode onOptionsItemSelected. Je peux encore revenir en arrière en appuyant sur le bouton Retour matériel, mais ce n'est pas bon.Le bouton Précédent/Haut de la barre d'outils Fragment ne fonctionne pas après la restauration

Cette partie est assez code standard pour la mise en place de la barre d'outils dans la méthode onActivityCreated du fragment:

toolbar = (Toolbar) activity.findViewById(R.id.toolbar_overview); 
    activity.setSupportActionBar(toolbar); 
    activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Cela aussi, pour manipuler le bouton clic:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == android.R.id.home) { 
     // [coded that issues log statements, pops the fragment not shown] 
    } 
} 

Je reproduis le problème par:
1) ouverture de l'application
2) navigation vers ce fragment
3) appuyer sur le bouton Accueil du matériel
4) appuyer sur le bouton rouge X (Terminate Application) dans Android Studio
5) ouvrir à nouveau l'application dans l'émulateur à l'aide de l'icône de l'application sur l'écran de l'émulateur. (Je ne réexécute pas l'application depuis Android Studio).
6) appuyer sur le bouton de retour de la barre d'outils. (Pas de résultat, pas de déclaration de log, rien).

Toute aide serait grandement appréciée.

Merci.

Répondre

0

Tout d'abord, assurez-vous de faire cela dans le onCreate Menthod:

toolbar = (Toolbar) activity.findViewById(R.id.toolbar_overview); 
activity.setSupportActionBar(toolbar); 
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

Essayez d'utiliser onResume pour rafraîchir la barre d'action lorsque l'application est relancée. Utilisez ce code:

@Override 
protected void onResume() { 
    super.onResume(); 
    activity.setSupportActionBar(toolbar); 
    activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} 

Hope this helps!

0

Dans de votre fragment onCreate (Bundle savedInstanceState) Méthode ajouter celui-ci

setHasOptionsMenu(true) 

Dans votre activité override onOptionsItemSelected (point MenuItem) et return false

Ensuite, vous devriez recevoir Appelez en Fragment

Une autre méthode aurait un objet fragment dans votre activité.

Et lorsque onOptionsItemSelected (élément MenuItem) de l'activité est appelée, vérifiez si votre objet fragment n'est pas null, puis appelez l'objet onOptionsItemSelected (MenuItem) du fragment à l'aide de votre fragmentObject. assurez-vous de renvoyer true si votre objet fragment n'est pas nul.

par exemple.

@Override 
public boolean onOptionsItemSelected(MenuItem item){ 
    switch(item.getId()){ 
    case android.R.id.home: 
     if(myFragObj != null){ 
      myFragObj.onOptionsItemSelected(item); 
      return true 
     } 
    break; 
    } 
    return super.onOptionsItemSelected(item); 
}