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)”