TheParentという親DialogFragmentと、TheParentを拡張するTheChildという子フラグメントがあります。子供で親フラグメントを拡張する子フラグメントを作成するときにnewInstance()を呼び出す
親でpublic static TheParent newInstance(int myInt) {
Bundle args = new Bundle();
TheParent fragment = new TheParent();
args.putInt(ARGUMENT_MYINT, myInt);
fragment.setArguments(args);
return fragment;
}
、その後:
はしかし、私は私が試したことだった、私はTheChildをインスタンス化していていてもTheParentにいくつかの変数を初期化できるようにする必要があります。
public static TheChild newInstance(int myInt) {
return super.newInstance(myInt);
}
しかし、これは静的なコンテキストのために私が好きではありません。
TheChildでnewInstance()を呼び出し、親のnewInstance()を呼び出す正しい方法は何ですか?
親が設定するために引数を必要とする場合、どのようにして子を適切に宣言/設定するのですか?親がmyIntを必要とする –
intをとるプライベートコンストラクタの親クラスに初期化コードを入れてください。その後、TheParent.newInstanceからそのコンストラクタを呼び出し、myIntに渡します。 TheChildクラスでは、intを受け取り、先ほど作成した親コンストラクターであるsuper(myInt)を呼び出すコンストラクターが必要です。TheChild.newInstanceでは、TheChildでこのコンストラクターを呼び出してmyIntを渡します。この方法では、子と親の両方が親初期化コードを実行し、TheChildで作成されたフラグメントはTheChildであり、TheParentではありません。 –