2017-06-02 4 views
0

Die Situation ist wie folgt: Ablauf: Aktivität -> Fragment1 -> Fragment2 -> Fragment3 Wenn die H/W Zurück-Taste angeklickt wird, wenn Fragment 1 ~ 3 auf dem Bildschirm ist, erscheint die Activity.Vorheriges Fragment bei Onbackpressed

Ich möchte wissen, welches Fragment zuvor bei der Onbackpress-Methode aufgerufen wurde.

-Code (Aktivität) 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

Sind Sie die Fragmente hinzufügen oder sie zu ersetzen ändern? –

+0

post einige Code bitte – Raghunandan

+0

Ich habe Code, den ich schrieb –

Antwort

0

Wenn Sie zwischen Fragmente transitioning, rufen addToBackStack() als Teil Ihrer FragmentTransaction:

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

Wenn Sie mehr benötigen Detaillierte Kontrolle (dh wenn einige Fragmente sichtbar sind, möchten Sie den Zurück-Schlüssel unterdrücken) können Sie einen OnKeyListener auf die übergeordnete Ansicht Ihres Fragments setzen:

//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

diesen Kodex in Fragmente setzen, wenn Sie das Fragment

addToBackStack (null) ändern

in Fragmente

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