
DagobertDokate
Dauer-User
- 137
Guten Morgen,
Ich wollte man fragen wie ich Fragmente die andere Fragmente beinhalten zum austausch der Fragmente benutzen kann (Support Library):
Ich habe ein Fragment, das ein FrameLayout für eine Navigation beinhaltet, und eins für den Content.
Wenn ich jetzt aus der Navigation etwas auswählen möchte, möchte ich dass das übergeordnete Fragment das Content Fragment austauscht.
Dazu verwende ich folgendes Handler-interface:
mein Fragment erweitert nun diese interface und wir als
übergeben.
Dies Funktioniert auch eigentlich. Nur sobald ich das Gerät drehe, kann ich in dem so gespeicherten Fragment mir keinen FragmentManager mehr holen, sonder bekomme immer null.
Übergeordnetes Fragment:
Was mache ich falsch? bzw. warum kann das Fragment den FragmentManager nicht mehr benutzen?
lg. Dagobert
Ich wollte man fragen wie ich Fragmente die andere Fragmente beinhalten zum austausch der Fragmente benutzen kann (Support Library):
Ich habe ein Fragment, das ein FrameLayout für eine Navigation beinhaltet, und eins für den Content.
Wenn ich jetzt aus der Navigation etwas auswählen möchte, möchte ich dass das übergeordnete Fragment das Content Fragment austauscht.
Dazu verwende ich folgendes Handler-interface:
Code:
package de.dagobert.dokate.test.own;
import java.io.Serializable;
public interface NavigationHandler extends Serializable {
void handleNavigation(int navigation);
}
Code:
public static NewsNavigationFragment newInstance(int index, NewsNavigationHandler handler) {
NewsNavigationFragment frag = new NewsNavigationFragment();
// Supply index input as an argument.
Bundle args = new Bundle();
args.putInt(INDEX, index);
args.putSerializable(HANDLER, handler);
frag.setArguments(args);
return frag;
}
Dies Funktioniert auch eigentlich. Nur sobald ich das Gerät drehe, kann ich in dem so gespeicherten Fragment mir keinen FragmentManager mehr holen, sonder bekomme immer null.
Übergeordnetes Fragment:
Code:
@Override
public void handleNavigation(int tab) {
Log.d(TAG, "handle navigation");
// hier
FragmentManager fm = getFragmentManager();
// hier
Log.d(TAG, "FragmentManager :" + fm);
FragmentTransaction trx = fm.beginTransaction();
trx.replace(R.id.content, frag);
trx.commit();
}
lg. Dagobert