2017-06-02 1 views
0

Situation est comme ceci Flux: Activité -> Fragment1 -> Fragment2 -> Fragment3 Lorsque vous cliquez sur le bouton de retour H/W lorsque le fragment 1 ~ 3 est à l'écran, l'activité apparaît.Récupère le fragment précédent sur Onbackpressed

Je veux savoir quel fragment était le précédent lors de l'appel de la méthode onbackpress.

Code (activité) public void setFragment(Fragment fragment) { if (!isFinishing()) { mFragmentManger.beginTransaction().replace(R.id.input_preference_contatiner, fragment).commit(); } } code (Fragment 1 2 3) @Override public void onClick(View v) { InputPreferenceActivity inputPreferenceActivity = (InputPreferenceActivity) getActivity(); inputPreferenceActivity.setFragment(new InputPreferenceStep1Fragment()); }

+0

Ajoutez-vous les fragments ou les remplacer? –

+0

poster du code s'il vous plaît – Raghunandan

+0

J'ai ajouté le code que j'ai écrit –

Répondre

0

Lorsque vous êtes en transition entre les fragments, appelez addToBackStack() dans le cadre de votre FragmentTransaction:

FragmentTransaction tx = fragmentManager.beginTransation(); 
tx.replace(R.id.fragment, new MyFragment()).addToBackStack("tag").commit(); 

Si vous avez besoin de plus contrôle détaillé (c'est-à-dire lorsque certains fragments sont visibles, vous voulez supprimer la touche retour), vous pouvez définir un OnKeyListener sur la vue parent de votre fragment:

//You need to add the following line for this solution to work; thanks skayred 
fragment.getView().setFocusableInTouchMode(true); 
fragment.getView().requestFocus(); 
fragment.getView().setOnKeyListener(new OnKeyListener() 
{ 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
     if(keyCode == KeyEvent.KEYCODE_BACK) 
     { 
      return true; 
     } 
     return false; 
    } 
}); 
0

mettre ce code dans Fragment lorsque vous modifiez le fragment

addToBackStack (null)

dans le changement fragment

  FragmentManager fragmentManager=getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.container,fragment).addToBackStack(null).commit();