Es gibt viele Antworten auf diese Fragen, aber technisch meine Frage ist anders, ich habe einige Dokumentation gelesen und vereinbart, dass wir nicht mehrere Fragmente in nur einer Aktivität verwenden sollten, sollten wir mehrere Aktivitäten mit mehreren verwenden Fragmente sind abhängig von Projektanforderung oder UI-Spezifikation, so Architektur meiner Anwendung ist 1. BaseActivity und alle erstreckt Aktivitäten von diesem 2. BaseFragment und alle Fragmente erstreckt sich von diesem mein Code:Beste Art, Fragmente zu verwenden
in BaseActivity ich gemacht habe folgende Funktionen
public void replaceFragment(int containerViewId, Fragment fragment, String fragmentTag, boolean addToBackStack) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(containerViewId, fragment, fragmentTag);
if(addToBackStack)
fragmentTransaction.addToBackStack(fragmentTag);
if(fragmentTag.matches("") && addToBackStack)
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
hinzufügen Fragment in Framelayout
public void addFragment(int containerViewId, Fragment fragment, String fragmentTag, boolean addToBackStack, boolean isPending) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(containerViewId, fragment, fragmentTag);
if(addToBackStack)
fragmentTransaction.addToBackStack(fragmentTag);
if(fragmentTag.matches("") && addToBackStack)
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
if(isPending)
fragmentManager.executePendingTransactions();
}
Zurück Presse Funktionalität
public void popBackStackImmediate() {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.popBackStackImmediate();
}
Gesamt Fragmente
public List<Fragment> fragmentList(){
return getSupportFragmentManager().getFragments();
}
und die Strömung ist fragmenta (add) -> FragmentB (ersetzen) ->
QUET SION 1: Warum zeigen TotalFragments 2? während ich FragmentB ersetzt habe A
FRAGE 2: wenn ich zurück drücke Taste zeigt immer noch 2 Fragmente und wie kann ich vom Stapel entfernen?
Frage 3: FragmentB ist sichtbar, aber auch fragmenta Zyklus Fragment Lebensdauer ..means onResume und onCreate funcations rufen zu seltsam, aber wahr weiß nicht, warum