公式の例では、http://developer.android.com/reference/android/app/DialogFragment.html#BasicDialogは、Bundleで引数をラップし、引数をsetArguments(bundle)で渡すno-argsコンストラクタを呼び出す静的ファクトリメソッドを使用してフラグメントが作成されているので、私の質問は単純にpublicコンストラクタでこれらの議論? getArguments/setArgumentsフラグメントのメソッドを使用する理由は何ですか?おそらくDialogは毎回再作成することは保証されませんが再利用されますか?もしそうなら、それが起こっているとき? ありがとうございます。DailogFragment - getArguments/setArguments - 引数を渡す理由は?
5
A
答えて
7
引数のないデフォルトのコンストラクタパターンを強制すると、システムは必要なときにフラグメントを動的に再作成できます。ドキュメントから:
フラグメントのすべてのサブクラスには、空のコンストラクタが含まれている必要があります。フレームワークは、必要に応じて、特に状態の復元中にフラグメントクラスを再インスタンス化することが多く、このコンストラクタを見つけてインスタンス化する必要があります。空のコンストラクタが使用できない場合は、状態の復元中に実行時例外が発生することがあります。
「頻繁に」と「場合によっては」曖昧になります。しかし、あなたの好奇心を満たすのに足りない...それは議論です!
空のパブリックコンストラクタは、パラメータ化されたパブリックコンストラクタと共存できます。これは、(コンストラクタの代わりに)静的メソッドを使うことや、 'Bundle'オブジェクトに引数をラップすることについては説明していません。 –
@KonradMorawskiそうです、これは妥当と聞こえます。しかし、ADTのlintツールは、そのようなコンストラクタを不具合として強調表示します。 –