
DagobertDokate
Dauer-User
- 137
Hallo Leute,
Ich wollte eine statische Klasse schreiben, die für das austauschen der Fragmente zuständig ist.
Dies scheint auch zu klappen, mit einer Ausnahme: Die Menüs der Fragmente werden nicht mehr richtig aufgeblasen (inflate XD).
z.B. dieses Menü
Wird jetzt das Fragment zum ersten mal mit der Bedingung aufgerufen die im else block steht, wird dies auch ordentlich angezeigt. Rufe ich das Fragment auf, so das die if-Bedingung erfüllt ist, läuft auch alles... rufe ich das Fragment jetzt wieder so auf, das der else block eintrifft, ist kein Menü mehr zusehen oO Was mache ich denn da nun schon wieder falsch?
lg. Dagobert
Ich wollte eine statische Klasse schreiben, die für das austauschen der Fragmente zuständig ist.
Dies scheint auch zu klappen, mit einer Ausnahme: Die Menüs der Fragmente werden nicht mehr richtig aufgeblasen (inflate XD).
z.B. dieses Menü
Code:
if (groupService.isMemberInGroup(groupId)) {
inflater.inflate(R.menu.group_details_member, menu);
} else {
Log.d(TAG, "not in group");
inflater.inflate(R.menu.group_details, menu);
}
Wird jetzt das Fragment zum ersten mal mit der Bedingung aufgerufen die im else block steht, wird dies auch ordentlich angezeigt. Rufe ich das Fragment auf, so das die if-Bedingung erfüllt ist, läuft auch alles... rufe ich das Fragment jetzt wieder so auf, das der else block eintrifft, ist kein Menü mehr zusehen oO Was mache ich denn da nun schon wieder falsch?
lg. Dagobert
Code:
public class ViewFactory {
private static FragmentManager fm;
public static void setFragmentManager(FragmentManager fm) {
ViewFactory.fm = fm;
}
public static void showGroupDetailsView(long groupId) {
FragmentTransaction ft = fm.beginTransaction();
ft.addToBackStack("last");
Fragment frag = new GroupDetailsFragment();
Bundle bundle = new Bundle();
bundle.putLong(GroupFragment.GROUP_ID, groupId);
frag.setArguments(bundle);
ft.remove(fm.findFragmentById(R.id.container));
ft.add(R.id.container, frag); // ft.replace(R.id.container, frag);
ft.commit();
}
public static void showGroupCreateView() {
FragmentTransaction ft = fm.beginTransaction();
ft.addToBackStack("last");
Fragment frag = new GroupCreateFragment();
ft.replace(R.id.container, frag);
ft.commit();
}
}