3

私はこのコードを持っています:

public static DateDialogFragment newInstance(Context context, DateDialogFragmentListener listener) {
    DateDialogFragment dialog = new DateDialogFragment();
    mContext = context;
    mListener = listener;
    /*I dont really see the purpose of the below*/
    Bundle args = new Bundle();
    args.putString("title", "Set Date");
    dialog.setArguments(args);

    return dialog;
}

かなり自明ですが、私が理解していないのは、バンドルを与えることのポイントです。私はそれを実際に利用することはないと思います。これに関するAndroidDocの説明(フラグメントの場合)は次のとおりです。http: //developer.android.com/reference/android/app/Fragment.html#setArguments (android.os.Bundle )構築引数は正確にはどういう意味ですか?一度も使ったことがないので、使われているのがわかりません。どんな説明でも大歓迎です。ありがとう。

4

1 に答える 1

6

これは、を介して新しい値にFragmentエクストラを渡す方法と同様に、操作中に構成またはその他の方法で読み取るために使用する可能性のあるデータ値をアタッチするための単なる一般的なメカニズムです。BundleActivityIntent

Fragmentただし、コンストラクターを使用してインスタンス化できるため、インスタンスを返す前に内部でsetterメソッドとメンバー変数を使用しActivityて簡単に構成できるため、APIの有用性が損なわれているように見える場合があることに同意します。たとえば、コードは、呼び出すことができる呼び出し元にメソッドを実装でき、それを引数として渡す必要はありません。ただし、そのモデルがアプリケーションに適合する場合、引数はこの情報をキー/値データとして格納するための優れた方法を提供します。FragmentnewInstance()FragmentsetTitle()

aの引数に関する重要な違いの1つFragmentは、保存されたインスタンスの状態の一部として保持されることです。そのため、UIが回転したり、その他の変更Fragmentでを再作成する必要がある場合、アタッチされた引数Bundleは保持され、新しいインスタンスに戻されます。

HTH

于 2012-06-16T03:50:16.837 に答える