Я тяну свои волосы за это уже несколько часов.Android - как обновить текстовое изображение из другого класса
У меня устройство Android Wear, где я отслеживал данные датчика. Я успешно отправил эти данные на сопряженный смартфон, я вижу сообщения, отображаемые в logcat на телефоне.
Тем не менее, я пытаюсь добавить текстовое представление на телефоне, чтобы отображать данные датчика, но когда я вызываю textview.append(), он вылетает с исключением из null-указателя.
Ошибка:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
listenerService, что прослушивает изменения, по телефону. Это делает работу, я получаю правильную информацию в LogCat:
public class ListenerService extends WearableListenerService {
@Override
public void onMessageReceived(MessageEvent messageEvent) {
retrieveMessage(messageEvent.getPath());
}
private void retrieveMessage(String message) {
MainActivity sensorData = new MainActivity();
sensorData.appendData(message);
}
и методы приема в моем MainActivity, даже получить правильное «сообщение» здесь в LogCat:
public void appendData(String message) {
Log.d("MESSAGE", message);
sensorList.append("\n" + " DISPLAY PLS : " + message);
}
Я правильно раздули расположение внутри метода OnCreate() в моем MainActivity и я могу добавить к этому TextView внутри этого метода:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
sensorList = (TextView) findViewById(R.id.sensorListView);
sensorList.setText("\n" + "On create");
Любая идея относительно того, что я делаю неправильно?
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/DrawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="7dp">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/tool_bar"
layout="@layout/tool_bar">
</include>
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/sensorListView"
android:layout_gravity="center_horizontal|top"
android:layout_marginTop="100dp"
android:text="Sensors" />
</FrameLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/RecyclerView"
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#ffffff"
android:scrollbars="vertical">
</android.support.v7.widget.RecyclerView>
Не могли бы вы добавить полный стек и присвоенные номера строк ? – Domin
Возможно, вы можете использовать интерфейс с обратным вызовом для установки текстового поля. Это похоже на пример «взаимодействие с фрагментами» на документах Android. –
На самом деле, ваша проблема заключается в том, что вы явно делаете новое действие в 'new MainActivity();' Разве вы не должны делать намерение начать MainActivity и передавать свои данные через это? –