Android 尝试从按键调用showDialog()方法时获取NullPointerException

Android 尝试从按键调用showDialog()方法时获取NullPointerException,android,dialog,nullpointerexception,Android,Dialog,Nullpointerexception,每当在特定视图中按下按钮时,我试图显示一个自定义对话框。但是,每当我尝试切换到包含按钮的视图时,就会出现强制关闭错误。LogCat在我用来设置侦听器的方法上给了我一个NullPointerException,但是,我不确定是否有错误。我想这可能是对话框代码,但我已经将其写入了Android开发者网站的规范中 下面是按钮侦听器的方法: //Registers the listeners for the various buttons in the edit view private void re

每当在特定视图中按下按钮时,我试图显示一个自定义对话框。但是,每当我尝试切换到包含按钮的视图时,就会出现强制关闭错误。LogCat在我用来设置侦听器的方法上给了我一个NullPointerException,但是,我不确定是否有错误。我想这可能是对话框代码,但我已经将其写入了Android开发者网站的规范中

下面是按钮侦听器的方法:

//Registers the listeners for the various buttons in the edit view
private void registerButtonListenersAndSetDefaultText() { 

    mTimeButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDialog(TIME_PICKER_DIALOG);
        }
    });
    updateTimeButtonText();

    mDayButton.setOnClickListener(new View.OnClickListener() { //here is where
                                                                       //the error is 
                                                                      //being thrown.

        public void onClick(View v) {
            showDialog(DAY_CHECKBOX_DIALOG);
        }
    }); 
    }
以下是onCreateDialog()方法:

下面是showDayPicker()方法(我认为可能是这个方法导致了问题):

下面是日志:

    10-19 20:23:57.191: ERROR/AndroidRuntime(293): FATAL EXCEPTION: main
    10-19 20:23:57.191: ERROR/AndroidRuntime(293): java.lang.RuntimeException: Unable to start activity ComponentInfo{vt.nhw.android.easyringertoggle/vt.nhw.android.easyringertoggle.ScheduleEditActivity}: java.lang.NullPointerException
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.os.Handler.dispatchMessage(Handler.java:99)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.os.Looper.loop(Looper.java:123)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at java.lang.reflect.Method.invokeNative(Native Method)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at java.lang.reflect.Method.invoke(Method.java:521)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at dalvik.system.NativeStart.main(Native Method)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293): Caused by: java.lang.NullPointerException
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at vt.nhw.android.easyringertoggle.ScheduleEditActivity.registerButtonListenersAndSetDefaultText(ScheduleEditActivity.java:52)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at vt.nhw.android.easyringertoggle.ScheduleEditActivity.onCreate(ScheduleEditActivity.java:39)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     ... 11 more

顺便说一句,我之前已经发布过这个问题,但是实际的问题主体变得复杂,所以我删除并重新发布了。谢谢你的帮助

您如何获得对这些对象的引用?像这样的

mTimeButton = (Button)findViewById(R.id.timeBtn);
如果是,你什么时候做?如果在进行findViewById()调用时视图不在屏幕上,它将向您返回null

发布你的onCreate方法,你会更容易弄清楚到底发生了什么


编辑:还向引发异常的行添加注释。因为我们不知道哪一个是52。

你确定
mTimeButton
mDayButton
引用的是
按钮吗?您的问题出现在
onCreate
上,而不是
showDialog
。错误发生在第32行。如果双击在vt.nhw.android.easyringertoggle.ScheduleEditActivity.registerButtonListenersAndSetDefaultText(ScheduleEditActivity.java:52)上告诉您的logcat错误,您将看到代码中没有行号的错误。堆栈跟踪指向ScheduleEditActivity.java的第52行
我正在引用对象mTimeButton和mDayButton,格式为:
mTimeButton=(Button)findViewById(R.id.time_Button)
,我在onCreate()中执行此操作我刚刚发现,似乎我没有在onCreate()方法中正确地形成按钮引用。谢谢你在这件小事上的帮助。
    10-19 20:23:57.191: ERROR/AndroidRuntime(293): FATAL EXCEPTION: main
    10-19 20:23:57.191: ERROR/AndroidRuntime(293): java.lang.RuntimeException: Unable to start activity ComponentInfo{vt.nhw.android.easyringertoggle/vt.nhw.android.easyringertoggle.ScheduleEditActivity}: java.lang.NullPointerException
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.os.Handler.dispatchMessage(Handler.java:99)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.os.Looper.loop(Looper.java:123)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at java.lang.reflect.Method.invokeNative(Native Method)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at java.lang.reflect.Method.invoke(Method.java:521)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at dalvik.system.NativeStart.main(Native Method)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293): Caused by: java.lang.NullPointerException
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at vt.nhw.android.easyringertoggle.ScheduleEditActivity.registerButtonListenersAndSetDefaultText(ScheduleEditActivity.java:52)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at vt.nhw.android.easyringertoggle.ScheduleEditActivity.onCreate(ScheduleEditActivity.java:39)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
    10-19 20:23:57.191: ERROR/AndroidRuntime(293):     ... 11 more
mTimeButton = (Button)findViewById(R.id.timeBtn);