J'ai une activité qui charge un fragment sur Créer. Et j'ai une barre d'outils sur cette activité qui a un bouton qui, lorsqu'on clique dessus, ajoute un nouveau fragment en plus de celui qui a été créé en premier.Le bouton Précédent de la barre d'outils ne ferme pas le fragment actuel.
Maintenant sur cette barre d'outils, lorsque je clique dessus, je veux supprimer le fragment le plus récent afin qu'il déplace juste le fragment qui est dans le bas (plus ancien). J'ai cherché et j'ai un peu compris, sauf pour une chose.
Je l'ai fait pour qu'il essaie de voir si le bouton de la barre d'outils est pressée:
@Override
public boolean onKeyUp(int keyCode, KeyEvent objEvent) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
}
return super.onKeyUp(keyCode, objEvent);
}
@Override
public void onBackPressed() {
FragmentManager mFM = getSupportFragmentManager();
if(mFM.findFragmentByTag("NewFragment") != null){
mFM.beginTransaction().remove(mFM.findFragmentByTag("NewFragment")).commit();
}
}
Le problème est, « codeTouche » ne correspond à à KEYCODE_BACK lorsque vous cliquez sur « le bouton retour de matériel » la et non le bouton de retour de la barre d'outils. Ce qu'il me donne est keycode 58 et non 4 (KEYCODE_BACK).
pourquoi ne pas ajouter une déclaration '' or' avec keycode 58' .. quelque chose comme 'si (codeTouche = = KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.XY) ... ' – user0815