可以将上下文变量传递给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这样的函数来传递上下文。这可能吗?
答案 0 :(得分:59)
您的DialogFragment
有一个非常方便的方法来获取Context
实例:
getActivity()
Fragment#getActivity()
将返回Activity
附加到的Context
(Fragment
)的实例。在调用片段onAttach()
后使用它。下面的图表说明了Fragment
lifecycle,正如您所看到的,使用getActivity()
到onCreate()
的{{1}}应该是有效的来电。
有关详细信息,请参阅Fragment
文档
答案 1 :(得分:6)
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
context=activity;
}
需要使用onAttach方法:for dialog Fragment
答案 2 :(得分:2)
onAttach(活动活动)现已弃用,
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
使用 onAttach(上下文上下文)代替
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
答案 3 :(得分:0)
像这样使用:
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;
}
}