erstellen App mit einem Fragmente einen Button id = Taste InAndroid CommitNow stellt nicht onCreateView von onCreate
@Override
protected void onStart() {
super.onStart();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.activity_main, new Testfrag())
.commitNow();
View b = findViewById(R.id.button);
}
b enthält, als die Schaltfläche und die Fragmente zurück onCreateView
vor dem Ende des Verfahrens genannt wird. Aber in
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fm= getSupportFragmentManager();
fm.beginTransaction()
.add(R.id.activity_main, new Testfrag())
.commitNow();
View b = findViewById(R.id.button);
}
b null ist und die Fragmente onCreateView
erst nach endet das Verfahren genannt. Dies kann ein "Feature" sein, aber es gibt nichts in der Dokumentation.
Warum verhält sich Commit jetzt anders in onCreate
- ruft onCreateView
erst später und onStart (oder einem anderen Event-Handler), wo onCreateView
wird synchron aufgerufen?
Dies ist eine interessante Idee und Dokumentation, wie Aktivitäts- und Fragmentlebenszyklen zusammenpassen, ist nicht klar. Wenn Sie jedoch ein Fragment mit dem Tag einfügen, ruft der FragmentManager in den Aktivitäten OnCreate OnCreateView auf. Ich werde sehen, ob ich mehr darüber erfahren kann, wie die beiden Lebenszyklen synchronisieren. –
@MikeJames Ich fand es am besten, die beiden Lebenszyklen überhaupt nicht miteinander zu verknüpfen. Die Lebenszyklen eines Fragments werden sehr komplex, wenn Sie beispielsweise einen ViewPager verwenden. Betrachten Sie sie als zwei getrennte Entitäten. – DeeV
Ich kann sehen, dass das Ignorieren jeglicher Synchronisation zwischen Aktivitäts- und Fragment-Lebenszyklus eine Vereinfachung ist, wenn Sie über das Entwerfen eines Fragments nachdenken, aber in diesem Fall wurde vorgeschlagen, dass es wesentlich ist zu verstehen, was passiert. Die Hypothese ist, dass die Aktivität den Zustand des Fragments nicht weiter "pusht", als dies zu diesem Zeitpunkt der Fall wäre. Ich versuche immer noch herauszufinden, ob das tatsächlich passiert. –