我使用documentation here创建一个dialogfragment.代码是:
public static MyAlertDialogFragment newInstance(int title) {
MyAlertDialogFragment frag = new MyAlertDialogFragment();
Bundle args = new Bundle();
args.putInt("title", title);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
int title = getArguments().getInt("title");
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(title)
.setPositiveButton(R.string.alert_dialog_ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
((FragmentAlertDialog)getActivity()).doPositiveClick();
}
}
)
.setNegativeButton(R.string.alert_dialog_cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
((FragmentAlertDialog)getActivity()).doNegativeClick();
}
}
)
.create();
}}
这里的dialogfragment仅与活动FragmentAlertDialog相关联.有什么办法可以将它与多个活动关联?通过setArguements()将其传递给onCreateDialog,这是我的调用活动名称.有什么使用方法吗?我检查了this question,希望得到一种确认/更好的方法.
解决方法:
您可以在某个地方定义一个接口(我指的是DialogFragment类中的公共静态接口,或者一个单独的公共接口Java文件),而不是具有FragmentAlerDialog活动,并且希望显示对话框的任何Activity都可以实现此接口.
我使用的一种常见做法是为所有项目活动都拥有根活动.使该根活动实现该接口,然后您可以从任何地方显示该DialogFragment.