私は次のように設定しましたAlertDialog
:
AlertDialog.Builder noteAlert = new AlertDialog.Builder(ClassName.this);
noteAlert.setTitle("Title");
noteAlert.setMessage("Message");
noteAlert.setPositiveButton("Positive", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// some code
}
});
noteAlert.setNeutralButton("Positive", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// some code
}
});
noteAlert.setNegativeButton("Positive", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// some code
}
});
AlertDialog alertDialog = noteAlert.create();
Button deleteButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
if (someCondition != 1)
// code runs till here
deleteButton.setEnabled(false); // code works on deleting this line
noteAlert.show();
if
上記のコードを実行すると、ステートメントまで機能します。その後、アプリがクラッシュします ( getButton()
NPE がスローされると想定しています)。ボタンを無効にするソリューションと同じコードを提供するSOに関する他の多くの回答を見てきました。
行をコメントアウトするsetEnabled()
と、アプリは正常に動作します(ボタンのみが無効になりません)。したがって、基本的にこの NegativeButton を無効にしようとしていますが、機能していません。解決策を提案できますか?
LogCat:
07-13 08:01:14.378: D/ViewRootImpl(19779): ViewRoot TouchDown(絶対) DOWN (380 , 691)
07-13 08:01:14.495: E/dialog(19779): AlertDiablog 開始
07-13 08:01:14.495: E/hasnote(19779): 0
07-13 08:01:14.511: E/hasnote(19779): 0
07-13 08:01:14.511: D/AndroidRuntime(19779): VM のシャットダウン
07-13 08:01:14.511: W/dalvikvm (19779): threadid=1: キャッチされない例外で終了するスレッド (group=0x40e392a0)
07-13 08:01:14.519: E/AndroidRuntime(19779): 致命的な例外: メイン
07-13 08:01:14.519: E/AndroidRuntime (19779): java.lang.NullPointerException
07-13 08:01:14.519: E/AndroidRuntime(19779): com.example.sherlockcaldroid2.TestSubjectCalendar$1$2.onClick(TestSubjectCalendar.java:250) で
07-13 08:01:14.519: E/AndroidRuntime(19779): com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:1 66) で
07-13 08:01:14.519: E/AndroidRuntime(19779): android.os.Handler.dispatchMessage(Handler.java:99) で
07-13 08:01:14.519: E/AndroidRuntime(19779): android.os.Looper.loop(Looper.java:137)
07-13 08:01:14.519: E/AndroidRuntime (19779): android.app.ActivityThread.main (ActivityThread.java:4849) で
07-13 08:01:14.519: E/AndroidRuntime(19779): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) で
07-13 08:01:14.519: E/AndroidRuntime(19779): java.lang.reflect.Method.invoke(Method.java:511) で
07-13 08:01:14.519: E/AndroidRuntime (19779): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:795) で
07-13 08:01:14.519: E/AndroidRuntime (19779): com.android.internal.os.ZygoteInit.main (ZygoteInit.java:562) で
07-13 08:01:14.519: E/AndroidRuntime(19779): dalvik.system.NativeStart.main(ネイティブ メソッド) で
07-13 08:01:34.089: I/Process(19779): シグナルを送信しています。PID: 19779 SIG: 9