0

Пользователь сообщила о NullPointerException происходит на линии onClick моего AlertDialog:AlertDialog NullPointerException в исходном коде Android

new AlertDialog.Builder(this) 
     .setTitle(getString(R.string.dialog_error)) 
     .setMessage(getString(R.string.create_failed_error)) 
     .setCancelable(false) 
     .setPositiveButton(getString(R.string.dialog_got_it), new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { // #L286 
       dialog.cancel(); 
       mButton.render(); 
      } 
     }) 
     .create().show(); 

ошибка, таким образом, коренится в android.internal.app.AlertController на Line 160:

((DialogInterface.OnClickListener) msg.obj).onClick(mDialog.get(), msg.what); 

С я могу догадаться, mDialog здесь, но как это может случиться? От реализации мы научимся диалог сохраняется в слабом Справочно:

private WeakReference<DialogInterface> mDialog; 

Это может быть, возможно, что диалог получает мусор до нажатия пользователя на кнопке диалоговой положительной? Я нахожу это весьма запутанную

StackTrace:

java.lang.NullPointerException 
at com.myapp.android.NewActivity$5.onClick(NewActivity.java:286) 
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:157) 
at android.app.ActivityThread.main(ActivityThread.java:5356) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
at dalvik.system.NativeStart.main(Native Method) 

Кнопка получает инстанцирования в onCreate

mButton = new CustomButton((CustomButton) findViewById(R.id.goButton)); 
+2

Show logcat result –

+0

'mButton.render();'. mButton будет null. Удалите все инструкции в onClick, чтобы видеть. – greenapps

+0

@ ρяσѕρєя Это отчет об аварии конечного пользователя, я не могу воспроизвести этот сбой локально. @greenapps Нет, авария происходит на линии 'onClick'' com.myapp.android.activities.NewActivity $ 5.onClick (NewActivity.java:286)' – Mahoni

ответ

0

Если это не проблема копирования/вставки, Вы проблема должна быть здесь:

 mButton = new CustomButton((CustomButton) findViewById(R.id.goButton)); 

Это неправильная кодировка, не должно быть:

 mButton = new CustomButton(this); 

Где это означает контекст или возможно без параметра. или это должно быть так:

mButton = (CustomButton)findViewById(R.id.goButton); 

не знаю, если это то, что единственная проблема, но я должен показать код, плохой, чтобы сделать это в качестве комментария.