android - Alert Dialog 显示空指针异常,仅适用于 Android 6.0

标签 android android-alertdialog android-6.0-marshmallow findviewbyid numberpicker

当我尝试打开带有 Number PickerAlert 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: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference at com.android.internal.app.AlertController.setupView(AlertController.java:489) at com.android.internal.app.AlertController.installContent(AlertController.java:234) at android.app.AlertDialog.onCreate(AlertDialog.java:423) at android.app.Dialog.dispatchOnCreate(Dialog.java:394) at android.app.Dialog.show(Dialog.java:295) at android.app.DialogFragment.onStart(DialogFragment.java:490) at android.app.Fragment.performStart(Fragment.java:2244) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1002) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148) at android.app.BackStackRecord.run(BackStackRecord.java:793) at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535) at android.app.FragmentManagerImpl$1.run(FragmentManager.java:482) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

你知道它是由什么引起的吗?我该如何解决?

最佳答案

我设法解决了这个问题。

我不得不改变

import android.app.alertdialog;

import android.support.v7.app.alertdialog;

可能自 Marshmallow 版本以来发生了某种类型的更改,当我们在使用标准/支持版本的库时不够小心时会导致问题。

关于android - Alert Dialog 显示空指针异常,仅适用于 Android 6.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36118805/

相关文章:

java - Android:WAITING模拟器在 Mac 中上线时出现超时错误?

android - 使用 ImageView 显示 AlertDialog 而无需任何填充

Android 6.0 写入外置SD卡

java - 如何使用 for 循环使用 "%"分割字符串

android - 对于 android 应用程序,如何按降序排列我的 SQLITE 数据库?

android - 如何更改 Android 对话框边距(到屏幕边缘的距离)?

java - 警报对话框的按钮被切断

java - 如何在 Marshmallow 和 6.0 及以下版本中选择默认照片选择设置弹出窗口来打开前置摄像头

android - Beta测试: App not appearing in Play Store Beta tab

android - Gradle Android Buildscript Configuration with Flavors