web-dev-qa-db-ja.com

DialogFragmentの引数としてコンテキストを渡す

コンテキスト変数を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などの関数は見つかりません。それは可能ですか?

29
giozh

DialogFragmentには、Contextインスタンスを取得するための非常に便利なメソッドがあります。

_getActivity()
_

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

enter image description here

詳細については、 Fragment のドキュメントをご覧ください

62
A--C
@Override
public void onAttach(Activity activity) {
    // TODO Auto-generated method stub
    super.onAttach(activity);
    context=activity;
}

OnAttachメソッドを使用する必要があります:ダイアログフラグメント用

6
taran mahal

onAttach(アクティビティアクティビティ) 廃止されました。

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


使用する onAttach(Context context) 代わりに

@Override
public void onAttach(Context context) {
    super.onAttach(context);
}
3
user3323765

次のように使用します:

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;
    }
}
0
anand krish