Ich habe eine übergeordnete DialogFragment namens TheParent und ein untergeordnetes Fragment namens TheChild, das TheParent erweitert.Aufrufen von newInstance() beim Erstellen eines untergeordneten Fragments, das ein übergeordnetes Fragment erweitert
Ich brauche aber noch einige Variablen in TheParent initialisieren zu können, obwohl ich TheChild bin instanziiert wird, so, was ich versucht war:
In der Mutter
public static TheParent newInstance(int myInt) {
Bundle args = new Bundle();
TheParent fragment = new TheParent();
args.putInt(ARGUMENT_MYINT, myInt);
fragment.setArguments(args);
return fragment;
}
und dann in dem Kind:
Allerdings mag es mich nicht, dies wegen des statischen Kontextes zu tun.
Wie lautet die richtige Methode, um NewInstance() in TheChild aufzurufen und newInstance() des übergeordneten Elements aufzurufen?
Wie kann ich das Kind richtig deklarieren/einrichten, wenn der Elternteil ein Argument benötigt, um eingerichtet zu werden? Das übergeordnete Element benötigt myInt –
Setzen Sie den Initialisierungscode in der übergeordneten Klasse in einem privaten Konstruktor, der ein int übernimmt. Rufen Sie dann diesen Konstruktor von TheParent.newInstance und übergeben Sie es myInt. In der Klasse TheChild benötigen Sie dann einen Konstruktor, der auch ein int aufruft und super (myInt) aufruft, was der Elternkonstruktor ist, den Sie gerade erstellt haben, und in TheChild.newInstance rufen Sie diesen Konstruktor in TheChild auf und übergeben ihn myInt. Auf diese Weise führen sowohl das Kind als auch das Elternelement den Elterninitialisierungscode aus, und das in TheChild erstellte Fragment hat den Typ TheChild und nicht TheParent. –