wake-up-neo.net

Wie bekomme ich eine Liste von Backstack-Fragmenteinträgen in Android?

Ich arbeite an einer Anwendung, in der Registerkarten mit FragmentActivity implementiert werden. Da in der gesamten Anwendung Registerkarten erforderlich sind, werden Fragmente intensiv verwendet, um die Anwendung für alle Android-Versionen kompatibel zu machen.

Infolgedessen habe ich ein Problem damit, zu visualisieren, welche Fragmente sich auf dem Backstack befinden. Ich bin sicher, dass es eine Möglichkeit gibt, die Liste der Fragmente auf dem Backstack abzurufen . Vielen Dank.

38

Die FragmentManager hat Methoden:

getBackStackEntryCount ()

getBackStackEntryAt (int index)

FragmentManager fm = getFragmentManager();

for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
   Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId());
}
91
Error 454

Wenn Sie prüfen möchten, welches Fragment sichtbar ist und wenn Sie die ID der Ansicht kennen, in der das Fragment platziert ist, müssen Sie zuerst in onCreate () Folgendes hinzufügen

    getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener() {

  @Override
  public void onBackStackChanged() {
    Fragment f = getSupportFragmentManager().findFragmentById(R.id.content_frame);
    if (f != null){
      updateActionBarTitle(f);
    }

  }
});

private void updateActionBarTitle(Fragment fragment) {
        String fragClassName = fragment.getClass().getName();

        if (fragClassName.equals(FirstFragment.class.getName())) {
            setTitle("Home");
        } else if (fragClassName.equals(SecondFragment.class.getName())) {
            setTitle("Second");
        }
    }

Dadurch wird der Titel der Aktionsleiste im Back Stack Change Listener aktualisiert.

0
Harsh Mittal