Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java singleshoicedialog中的正负按钮出现问题_Java_Android_Dialog - Fatal编程技术网

Java singleshoicedialog中的正负按钮出现问题

Java singleshoicedialog中的正负按钮出现问题,java,android,dialog,Java,Android,Dialog,我有一个底部导航片段,我想在单击按钮时在片段中显示一个单选对话框,但我有以下日志: 2020-06-24 18:47:27.954 18946-18946/app E/AndroidRuntime: FATAL EXCEPTION: main Process: app, PID: 18946 java.lang.NullPointerException: Attempt to invoke interface method 'void app.MapChoiceFragment$

我有一个底部导航片段,我想在单击按钮时在片段中显示一个单选对话框,但我有以下日志:

2020-06-24 18:47:27.954 18946-18946/app E/AndroidRuntime: FATAL EXCEPTION: main
    Process: app, PID: 18946
    java.lang.NullPointerException: Attempt to invoke interface method 'void app.MapChoiceFragment$SingleChoiceListener.OnNegativeButtonClickedMap()' on a null object reference
        at app.baharestanschool.ir.MapChoiceFragment$1.onClick(MapChoiceFragment.java:55)
        at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:174)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7523)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
以下是我的错误代码:

public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    final String[] item = getActivity().getResources().getStringArray(R.array.addresses);
    builder.setTitle("choose")
            .setSingleChoiceItems(item, position, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    position=i;
                }
            })
            .setPositiveButton("O", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    mlistener.OnPosetiveButtonClickedMap(item,position);
                }
            })
            .setNegativeButton("c", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    mlistener.OnNegativeButtonClickedMap();
                }
            });
    return builder.create();
}

您应该创建如下对话框:-

public class CustomDialogFragment extends DialogFragment {
private OnButtonClickListener mlistener;

public interface OnButtonClickListener {
     void OnPositiveButtonClickedMap(String[] item, int position);
     void OnNegativeButtonClickedMap();
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    try {
        mlistener = (OnButtonClickListener) getActvity();
    } catch (Exception e) {
    }
}

public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    final String[] item = getActivity().getResources().getStringArray(R.array.addresses);
    builder.setTitle("choose")
            .setSingleChoiceItems(item, position, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    position=i;
                }
            })
            .setPositiveButton("O", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    mlistener.OnPositiveButtonClickedMap(item,position);
                }
            })
            .setNegativeButton("c", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    mlistener.OnNegativeButtonClickedMap();
                }
            });
    return builder.create();
  }
}
class MyActivity extends Activity implements OnButtonClickListener {

}
在活动中,实现OnButtonClickListener,如下所示:-

public class CustomDialogFragment extends DialogFragment {
private OnButtonClickListener mlistener;

public interface OnButtonClickListener {
     void OnPositiveButtonClickedMap(String[] item, int position);
     void OnNegativeButtonClickedMap();
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    try {
        mlistener = (OnButtonClickListener) getActvity();
    } catch (Exception e) {
    }
}

public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    final String[] item = getActivity().getResources().getStringArray(R.array.addresses);
    builder.setTitle("choose")
            .setSingleChoiceItems(item, position, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    position=i;
                }
            })
            .setPositiveButton("O", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    mlistener.OnPositiveButtonClickedMap(item,position);
                }
            })
            .setNegativeButton("c", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    mlistener.OnNegativeButtonClickedMap();
                }
            });
    return builder.create();
  }
}
class MyActivity extends Activity implements OnButtonClickListener {

}

有关详细信息,请单击“您可以构建自己的对话框”。我用以下示例构建了自己的自定义对话框

我认为
mlistener
为空如何给
mlistener
赋值?什么是
mlistener
?在
mlistener.OnPositiveButtonClickedMap(项目,位置)行中我有此错误
应为0个参数,但发现2个
更新的plz检查。修改的
OnButtonClickListener
我阅读并使用了您更新的guid,但现在我有一个以下错误2020-06-24 20:18:23.164 21374-21374/app E/AndroidRuntime:致命异常:主进程:app,PID:21374 java.lang.NullPointerException:尝试对空对象引用调用接口方法“void app.baharestanschool.ir.MapChoiceFragment$OnButtonClickListener.OnPositiveButtonClickedMap(java.lang.String[],int)”