【发布时间】:2016-07-07 05:45:13
【问题描述】:
当我尝试打开带有Number Picker 的Alert Dialog 时,我遇到了一个奇怪的问题。它应该在我按下 button 并将 listener 设置为之后调用:
private class ButtonClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(ImagesActivity.this);
AlertDialog dialog;
final NumberPicker np = new NumberPicker(ImagesActivity.this);
np.setMinValue(1);
np.setMaxValue(dataModel.getPagesNumber());
np.setValue(currentPage);
builder.setView(np);
builder.setTitle(R.string.jump_title);
builder.setPositiveButton(R.string.jump_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
pager.setCurrentItem(np.getValue() - 1);
dialog.dismiss();
}
});
builder.setNegativeButton(R.string.jump_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
dialog = builder.create();
dialog.show();
}
}
ImagesActivity 是类,ButtonClickListener 所在的位置。它显示ViewPager,应滚动到使用NumberPicker 选择的页面。
它在我的旧手机上运行良好,但是当我尝试在Android 6 上启动它时,我收到了这条消息错误:
java.lang.NullPointerException:尝试调用虚拟方法 'android.view.View android.view.View.findViewById(int)' 为空 对象引用 在 com.android.internal.app.AlertController.setupView(AlertController.java:489) 在 com.android.internal.app.AlertController.installContent(AlertController.java:234) 在 android.app.AlertDialog.onCreate(AlertDialog.java:423) 在 android.app.Dialog.dispatchOnCreate(Dialog.java:394) 在 android.app.Dialog.show(Dialog.java:295) 在 android.app.DialogFragment.onStart(DialogFragment.java:490) 在 android.app.Fragment.performStart(Fragment.java:2244) 在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1002) 在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148) 在 android.app.BackStackRecord.run(BackStackRecord.java:793) 在 android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535) 在 android.app.FragmentManagerImpl$1.run(FragmentManager.java:482) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
你知道它是由什么引起的吗?我该如何解决?
【问题讨论】:
-
我没有 setupView() 代码,我认为它是由 Android Library 提供的
标签: android android-alertdialog android-6.0-marshmallow findviewbyid numberpicker