32

DialogFragment にコンテキスト変数を渡すことは可能ですか?

文字列を渡すためにダイアログ内でこのコードを使用しました:

public static ConfirmDialog newInstance( String f) {
    ConfirmDialog d = new ConfirmDialog();

    Bundle args = new Bundle();
    args.putString("FILE_NAME", f);
    d.setArguments(args);

    return d;
}

しかし、コンテキストを渡すための putString のような関数は見つかりません。それは可能ですか?

4

4 に答える 4

68

インスタンスDialogFragmentを取得するための非常に便利な方法があります。Context

getActivity()

Fragment#getActivity()がアタッチされているActivity( であるContext)のインスタンスを返します。FragmentFragmentonAttach()が呼び出された後に使用します。以下のチャートはFragmentライフサイクルgetActivity()を示しています。ご覧のとおり、 from onCreate()toを使用するonDestroy()ことは有効な呼び出しです。

ここに画像の説明を入力

詳細については、Fragmentドキュメントを参照してください

于 2013-03-17T18:08:47.583 に答える
4

onAttach(Activity アクティビティ)は非推奨になりました。

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
}


代わりにonAttach(Context context)を 使用してください

@Override
public void onAttach(Context context) {
    super.onAttach(context);
}
于 2016-04-23T10:46:57.087 に答える
1

次のように使用します。

public class Dialog extends DialogFragment implements OnClickListener {
    public void onClick(View v) {
    switch (v.getId()) {
        case R.id.message: {
            this.startActivity(new Intent(context, Login.class));
                                 //or use getActivity() instead of context
            }
            break;
         }
    }
    @Override
    public void onAttach(Activity activity) {
        // TODO Auto-generated method stub
        super.onAttach(activity);
        context=activity;
    }
}
于 2015-02-11T09:03:41.367 に答える