1

我想使用这个[链接] [1]之后的片段创建对话框,

这是我的对话框片段代码

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, "dialog"); 请帮助我不确定我的代码有什么问题..

4

2 回答 2

2

你的newInstance()回报null。将其更改为 return frag

于 2013-05-29T12:11:06.377 回答
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
}
于 2013-05-29T12:25:14.553 回答