android fragment addToBackStack(null) :wie Sie die gleichen fragment-stack nur eine Zeit?
als fragment verwenden addToBackStack(null) - Methode, und klicken Sie auf eine Methode, die viele Male in eine Aktivität, die fragment-Seite speichern zurück Stapel jedes mal, wenn ich drücken Sie die zurück-Taste, es wird wieder die gleiche Seite, wie Sie die gleichen fragment-stack nur einmal?
mSettingBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SettingFragment settingFragment = new SettingFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.replace(R.id.left_framelayout, settingFragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
InformationsquelleAutor Lijun Lou | 2013-01-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim hinzufügen Ihres
Fragment
auf den backstack sollten Sie auch einenTAG
in der Lage sein, zu erkennen, dassFragment
:Vor, bevor Sie die
Fragment
Sie werden in der Lage sein zu überprüfen, ob dieserFragment
bereits in den backstack mit :Diese zurück
null
wenn dieFragment
ist nicht bereits Hinzugefügt.addToBackStack()
kann verwendet werden, um die ganzeBackStackEntry
Objekt, nicht nur ein einzelnes fragment. Um die fragment-tag, betrachten mit 3-param-Versionenadd(int, Fragment, String)
undreplace(int, Fragment, String)
wie würden Sie also abrufen, das fragment von tag, die nach dem drücken der zurück-Taste? Wo und wie würde das gemacht werden? So etwas wie: ListFragment 1 (klicken Sie auf das listView-Zeile, die Transaktion mit commit tag) >>> ListFragment 2 >>> (auf) ZURÜCK-TASTE >>> abrufen/wiederherstellen ListFragment über 1 tag ohne nachladen von Daten
die
Fragment
werden wiederhergestellt, für Sie, die Sie nicht haben, um manuell wieder neu hinzufügen oder was auch immer, das wird von Android, wenn Sie richtig verwendet werdenFragments
- und des back-Stapelswas ist, wenn das Fragment ist die Wiederverwendung der gleichen Klasse? Sagen, Teil 1 ist mit "LF" und Sie wollen klicken Sie auf eine Zeile, und die Last einer anderen, "LF" (Fragment 2). Fragment 1 übergibt einen string, Fragment 2, lädt verschiedene Daten, aber es ist mit der gleichen Klasse (LF). Die Logik würde sagen, verwenden Sie diese Zeichenfolge wie addToBackStack(string), dann drücke ich zurück und getFragmentMangager().findFragmentByTag(string) null zurück?? Ich bin mit ersetzen und nicht hinzufügen, wenn das einen Unterschied macht.
InformationsquelleAutor Ovidiu Latcu