Ich habe ein merkwürdiges Problem. Ich möchte ein neues Fragment vom aktuellen Fragment öffnen. Also mache ich es so:
Fragment fragment = new teamSettings();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.teamDetailAdmin, fragment);
// add to backstack, then back button will be work with fragments!
ft.addToBackStack(null);
// add animation
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
Das Problem ist, dass ich in meinem neuen Fragment die Schaltfläche sehe, auf die ich im vorherigen Fragment geklickt habe.
Kann mir jemand erklären, warum das passiert?
Antworten:
1 für die Antwort № 1Try this way,
Please take framelayout in your current activity
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Fragment fragment = new teamSettings();
getFragmentManager().beginTransaction().replace(R.id.container, fragment,
fragment.getTag()).commit();
1 für die Antwort № 2
Fragmentfragmentierung aufrufen replace(R.id.container,fragment)
funktioniert so ziemlich wie Anrufen remove
zu jedem Fragment des gegebenen Behälters, und add
zu dem neuen Fragment. Wenn das vorherige Fragment nicht entfernt wird (wobei der Button weiterhin angezeigt wird), liegt das daran, dass Sie dieses Fragment für einen anderen Container als R.id.teamDetailAdmin
. Um das Fragment erfolgreich zu ersetzen, müssen Sie das aktuelle Fragment aus seinem Container entfernen und das neue Fragment dem Container hinzufügen, den Sie möchten.