私はAndroidフラグメントを実装しています。私は、フレームワークが自動的にフラグメントを破棄して再作成できることを理解しています。フラグメントを再作成すると、引数を持つコンストラクタではなく、デフォルトのコンストラクタが呼び出されます。 static newInstance
メソッドを実装することによって、フラグメントに引数を提供する方法を示す多くの投稿(this questionへの受け入れられた回答など)があります。Fragment.newInstanceメソッドの理解
私が理解していないのは、誰がnewInstance
と呼んでいるかです。私の最初の印象は、このnewInstance
メソッドの任意の引数を定義できるので、明示的な呼び出しをアプリケーションのどこかに追加する必要があり、名前newInstance
は単なる命名規則です。しかし、フレームワークがデフォルトのコンストラクタを呼び出すことによって作成されたフラグメントに加えて、私に混乱を招く2つ目のフラグメントを作成することになります。
上記の仮定は正しくありません。newInstance
メソッドは、実際には何らかの形で、クラスをインスタンス化するためのJavaの組み込みメソッドのオーバーロードですか?その場合、私はどのように任意の引数リストを取るnewinstance
メソッドを定義できないのか分かりません。それとも、Javaで可能なのですか?Javaだけでは分かりません。
はいコードでnewInstance()を呼び出す必要があります。空のコンストラクタは、**再作成**が必要な場合にフレームワークで使用されます。 – Yazan
P.S:断片化をインスタンス化せずに使用した場合はありますか?つまり、 '... = new ...'を使わずに? – Yazan
実際、はい - それは新しいものを使用しないです。アクティビティのレイアウトのXMLでは、私は要素を持っています。私が知る限りでは、その部分がどのようにインスタンス化されるかです。私はどこにでも明示的な電話を持っていません。とにかく、その仕組みがわからない。 –
Dabbler