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 に答える