「newInstance」パターン (新しい Android フラグメントをインスタンス化するためのベスト プラクティス) について知っています。しかし、たとえば別のフラグメントがデータを変更した場合、フラグメントのこれらの引数を更新するにはどうすればよいでしょうか?
フラグメント/アクティビティ間のコールバック メソッドについては知っていますが、これらのコールバックは引数を更新しませんか?!
例: フラグメントの作成時に、URI をバンドルと共に it に渡します。次に、別のフラグメントが最初のフラグメントの changeUri(Uri uri) メソッド コールバックを介してこの URI を変更します。その後、フラグメントが再作成された場合 (たとえば、画面の回転が原因で)、後で更新された uri の代わりに、引数バンドルから最初の URI が使用されます。正しいですか?
これを解決するためのベストプラクティスは何ですか? 手動でそれをsavedInstanceStateに保存し、使用時にinstanceStateまたはarguments-bundleのどちらを使用するかを決定する必要がありますか?
フラグメントの引数を処理する標準的な方法を探しているので、そのようなアプローチ (疑似コード) を使用していると思います。
private Uri arg1;
public static Fragment newInstance(Uri arg1) {
create bundle
create fragment instance
set bundle to fragment
return fragment
}
private void onCreate(Bundle savedInstance) {
if(savedInstance != null) {
arg1 = savedInstance.uri
}
}
private Uri getUri() {
if(arg1 == null) {
arg1 = getArguments.uri
}
if(arg1 == null) {
arg1 = defaultValue
}
}
したがって、私の議論にアクセスするための単純に統一された方法があります。そして、その引数が必要になるたびに、if-else-hassle を使用する必要はありません。
あなたはそれについてどう思いますか?