NullPointerException调用Dialog Fragment时

时间:2013-05-29 12:09:10

标签: android dialog fragment

我想在[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,“对话框”); 请帮助我不确定我的代码有什么问题..

2 个答案:

答案 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
}