我想在[link] [1],
之后使用片段创建Dialog这是我的对话框片段代码
public class AlertFragmentDialog extends DialogFragment
{
public static final int DIALOG_EXIT_ALERT = 1;
private static final String KEY_TITLE = "titles";
private static final String KEY_DIALOG = "dialogtype";
public static DialogFragment newInstance(int _title,int _dialogType){
AlertFragmentDialog frag = new AlertFragmentDialog();
Bundle args = new Bundle();
args.putInt(KEY_TITLE, _title);
args.putInt(KEY_DIALOG, _dialogType);
frag.setArguments(args);
return null;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
switch(getArguments().getInt(KEY_DIALOG))
{
case DIALOG_EXIT_ALERT :
return new AlertDialog.Builder(getActivity()).setTitle(getArguments().getInt(KEY_TITLE))
.setPositiveButton(R.string.global_yes,new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
((MainActivity)getActivity()).doYesConfirmationClick();
}
})
.setNegativeButton(R.string.global_no, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
((MainActivity)getActivity()).doNoConfirmationClick();
}
}).create();
}
return null;
}
}
使用此代码调用它
FragmentManager fm = getSupportFragmentManager();
DialogFragment alertDialog = AlertFragmentDialog.newInstance(R.string.global_exit_alert,AlertFragmentDialog.DIALOG_EXIT_ALERT);
alertDialog.show(fm, "dialog");
但是当我运行时,我的模拟器上出现了错误NullPointerException。 alertDialog.show出错(fm,“对话框”); 请帮助我不确定我的代码有什么问题..
答案 0 :(得分:2)
您的newInstance()
返回null
。将其更改为返回frag
。
答案 1 :(得分:1)
public static DialogFragment newInstance(int _title,int _dialogType){
AlertFragmentDialog frag = new AlertFragmentDialog();
Bundle args = new Bundle();
args.putInt(KEY_TITLE, _title);
args.putInt(KEY_DIALOG, _dialogType);
frag.setArguments(args);
return frag; // you were returning null
}