"Static Fragment Manager"

  • 0 Antworten
  • Letztes Antwortdatum
DagobertDokate

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ü

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();
	}
}
 
Zurück
Oben Unten