Android – попытка вызвать виртуальный метод по ссылке на нулевой объект ⇐ Android
Android – попытка вызвать виртуальный метод по ссылке на нулевой объект
Сейчас я работаю над проектом (я впервые работаю с Android Studio).
Код отправляет строку в микроконтроллер для чтения некоторых данных. Если я вызываю метод нажатием кнопки, все работает идеально, но если я вызываю его в конце другого процесса, приложение вылетает с этой ошибкой.< /п> E/AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: main Процесс: com.emether, PID: 8490 java.lang.NullPointerException: попытка вызвать виртуальный метод «void com.emether.MainActivity$ConnectedThread.write(java.lang.String)» по ссылке на нулевой объект в com.emether.MainActivity$3.onClick(MainActivity.java:149) в android.view.View.performClick(View.java:8160) в android.widget.TextView.performClick(TextView.java:16221) на com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194) в com.emether.MainActivity$1.handleMessage(MainActivity.java:114) в android.os.Handler.dispatchMessage(Handler.java:106) в android.os.Looper.loop(Looper.java:246) в android.app.ActivityThread.main(ActivityThread.java:8512) в java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) Код кнопки
buttonToggle.setOnClickListener(new View.OnClickListener() { @Override public void onClick (Просмотр) { Строка cmdText = ноль; cmdText=""; linkedThread.write(cmdText); } }); Здесь я получаю сообщение об ошибке.
handler = новый Handler(Looper.getMainLooper()) { @Override public void handleMessage (Сообщение сообщения) { переключатель (msg.what) { случай CONNECTING_STATUS: переключатель (msg.arg1) { Дело 1: toolbar.setSubtitle("Подключено к " + имя_устройства); buttonConnect.setEnabled(истина); buttonToggle.setEnabled(истина); buttonToggle.performClick()---- **Строка ошибки**; перерыв; Дело 1: toolbar.setSubtitle("Устройство не может подключиться"); buttonConnect.setEnabled(истина); перерыв; } перерыв; Заранее спасибо.
Я пытался отладить приложение, но если я добавлю разбивку в процесс «cmdText», она не станет нулевой, и код будет работать идеально... Это похоже на то, что чему-то нужна некоторая задержка (?), чтобы не было нулевым.
Сейчас я работаю над проектом (я впервые работаю с Android Studio).
Код отправляет строку в микроконтроллер для чтения некоторых данных. Если я вызываю метод нажатием кнопки, все работает идеально, но если я вызываю его в конце другого процесса, приложение вылетает с этой ошибкой.< /п> E/AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: main Процесс: com.emether, PID: 8490 java.lang.NullPointerException: попытка вызвать виртуальный метод «void com.emether.MainActivity$ConnectedThread.write(java.lang.String)» по ссылке на нулевой объект в com.emether.MainActivity$3.onClick(MainActivity.java:149) в android.view.View.performClick(View.java:8160) в android.widget.TextView.performClick(TextView.java:16221) на com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194) в com.emether.MainActivity$1.handleMessage(MainActivity.java:114) в android.os.Handler.dispatchMessage(Handler.java:106) в android.os.Looper.loop(Looper.java:246) в android.app.ActivityThread.main(ActivityThread.java:8512) в java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) Код кнопки
buttonToggle.setOnClickListener(new View.OnClickListener() { @Override public void onClick (Просмотр) { Строка cmdText = ноль; cmdText=""; linkedThread.write(cmdText); } }); Здесь я получаю сообщение об ошибке.
handler = новый Handler(Looper.getMainLooper()) { @Override public void handleMessage (Сообщение сообщения) { переключатель (msg.what) { случай CONNECTING_STATUS: переключатель (msg.arg1) { Дело 1: toolbar.setSubtitle("Подключено к " + имя_устройства); buttonConnect.setEnabled(истина); buttonToggle.setEnabled(истина); buttonToggle.performClick()---- **Строка ошибки**; перерыв; Дело 1: toolbar.setSubtitle("Устройство не может подключиться"); buttonConnect.setEnabled(истина); перерыв; } перерыв; Заранее спасибо.
Я пытался отладить приложение, но если я добавлю разбивку в процесс «cmdText», она не станет нулевой, и код будет работать идеально... Это похоже на то, что чему-то нужна некоторая задержка (?), чтобы не было нулевым.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение