Ich habe genannt ein Activity
wie der folgenden Code:Android onBackStackChanged() nicht
public class AuthenticatedMainActivity extends Activity implements FragmentManager.OnBackStackChangedListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
.............
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().add(R.id.frame_container,fragment, "First").addToBackStack(null).commit();
}
private void switchFragment(Fragment fragment){
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).addToBackStack("Tag").commit();
}
@Override
public void onBackStackChanged() {
System.out.println("====================================================changeeeeeeeeeeeeeeeeeeeeeeeeee");
}
}
Aber die onBackStackChanged()
Methode ist noch nie Nach erfolgreich ersetzt Fragmenten mit der switchFragment
Methode aufgerufen.
Stellt sich heraus, Sie explizit aufrufen müssen: .addToBackStack (null) sonst onBackStackChanged nicht einmal aufgerufen wird, wenn richtig Eingetragen! –
@ BenMartenDas liegt daran, dass Fragmenttransaktionen standardmäßig nicht zum Backstack hinzugefügt werden. –