コンテキスト変数を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などの関数は見つかりません。それは可能ですか?
DialogFragment
には、Context
インスタンスを取得するための非常に便利なメソッドがあります。
_getActivity()
_
Fragment#getActivity()
は、Activity
がアタッチされているContext
(これはFragment
)のインスタンスを返します。フラグメントのonAttach()
が呼び出された後に使用します。下のグラフは Fragment
ライフサイクル を示しています。ご覧のとおり、getActivity()
からonCreate()
にonDestroy()
を使用して有効な電話である。
詳細については、 Fragment
のドキュメントをご覧ください
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
context=activity;
}
OnAttachメソッドを使用する必要があります:ダイアログフラグメント用
onAttach(アクティビティアクティビティ) 廃止されました。
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
使用する onAttach(Context context) 代わりに
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
次のように使用します:
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;
}
}