In dem folgenden Stück Code, was ist der Sinn der Verwendung detach
/attach
Fragmente statt nur replacing
sie?Attach/detach vs ersetzen Fragment
private void showFragment(String tag) {
String oldTag = mSelectedTag;
mSelectedTag = tag;
final FragmentManager fm = getSupportFragmentManager();
final FragmentTransaction ft = fm.beginTransaction();
final Fragment oldFragment = fm.findFragmentByTag(oldTag);
final Fragment fragment = fm.findFragmentByTag(tag);
if (oldFragment != null && !tag.equals(oldTag)) {
ft.detach(oldFragment);
}
if (fragment == null) {
ft.replace(R.id.container, getContentFragment(tag), tag);
} else {
if (fragment.isDetached()) {
ft.attach(fragment);
}
}
ft.commit();
}
Warum kann ich nicht einfach so etwas schreiben?
private void showFragment(String tag) {
final FragmentManager fm = getSupportFragmentManager();
final FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.container, getContentFragment(tag), tag);
ft.addToBackStack(null);
ft.commit();
}
getContentFragment
Methode, für alle Fälle:
private Fragment getContentFragment(String tag) {
Fragment fragment = null;
if (Frag1.TAG.equals(tag)) {
fragment = new Frag1();
} else if (Frag2.TAG.equals(tag)) {
fragment = new Frag2();
}
return fragment;
}
meiner Meinung nach beide nicht nützlich. Okay, es hängt von Ihrem Anwendungsfall ab. Mein System ist, um Fragmente zu zeigen/zu verstecken, Sie behalten den Lebenszyklus dann am Leben! –
das ist ziemlich schlecht Ansatz und Sie verschwenden einfach Ressourcen –
@Marcin Orlowski Sie meine schlechte Ansatz ist zu zeigen/zu verbergen, immer zu ersetzen, oder die attach/detach/ersetzen? – FelisManulus