2011-10-19 14 views
0

特定のビューでボタンが押されるたびにカスタムダイアログを表示しようとしています。しかし、ボタンを含むビューに切り替えるときはいつでも強制終了エラーが発生します。 LogCatは、私がリスナーを設定するために使用しているメソッドでNullPointerExceptionを与えていますが、私はホエイにエラーがあるとは確信していません。私はそれがDialogコードかもしれないと思うが、Android Developersのサイトの仕様に書いている。ボタンからshowDialog()メソッドを呼び出すときにNullPointerExceptionが発生する

@Override 
protected Dialog onCreateDialog(int id) { 
    Dialog dialog = new Dialog(this); 
    switch(id) { 
    case TIME_PICKER_DIALOG: 
     showTimePicker(); 
    case DAY_CHECKBOX_DIALOG: 
     showDayPicker(); 

    } 
    return onCreateDialog(id); 
} 

ここshowDayPicker()メソッド(私が原因とされてもよいと思うものである:

//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()メソッドである。ここで:ここ

ボタンのリスナーと方法があります問題):

private Dialog showDayPicker() { 
    Dialog dialog = new Dialog(ScheduleEditActivity.this); 
    dialog.setContentView(R.layout.day_picker_dialog); 
    dialog.setTitle("Choose A Day"); 
    return dialog; 
} 

そして、ここではLogCatです:

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 

P.S.私は前にこの質問を投稿しましたが、実際の質問のボディは複雑になり、削除して再転記しました。ご協力いただきありがとうございます!

+0

'mTimeButton'と' mDayButton'は 'Button'を参照していますか?問題は 'showDialog'ではなく' onCreate'です。 – DeeV

+0

エラー32行目でエラーが発生しています。vt.nhw.android.easyringertoggle.ScheduleEditActivity.registerButtonListenersAndSetDefaultText(ScheduleEditActivity.java:52) にあるlogcatエラーをダブルクリックすると、エラー –

+0

になりますコード内の行番号を見ることなく伝えます。スタックトレースは 'ScheduleEditActivity.java'の52行目を指しています –

答えて

2

どのようにこれらのオブジェクトへの参照を取得していますか?このようなもの?

mTimeButton = (Button)findViewById(R.id.timeBtn); 

もしそうなら、いつですか? findViewById()の呼び出し時にビューが画面に表示されていない場合、nullが返されます。

あなたのonCreateメソッドをポストすると、何が起こっているのかを簡単に把握できます。

編集:例外がスローされている行にもコメントを追加します。私たちはどちらが52かを知ることができません。

+0

mTimeButtonとmDayButtonのオブジェクトを' mTimeButton =(Button)findViewById(R.id.time_button) 'の形式で参照していますが、私はonCreateアクティビティの()メソッド。 – jasonh90

+0

私はちょっと考えていました。私はonCreate()メソッドでボタンリファレンスを正しく作成していないようです。このような些細な問題に助けてくれてありがとう。 – jasonh90

関連する問題