Android значение Studio TextView не будет обновляться - PullRequest
0 голосов
/ 02 апреля 2020

В настоящее время я работаю над приложением, которое получает данные Bluetooth от датчика угарного газа перед его отображением на телефон пользователя. У меня есть работающая сторона bluetooth, и я получаю данные, которые мне требуются, однако, когда я пытаюсь отобразить переменную в элементе TextView, элемент не обновляет его, а просто остается прежним.

Кнопка на экране (ниже xml) сработает другой модуль, чтобы начать связь по Bluetooth, и затем он должен отобразиться на экране. Вот xml для кнопки и TextView

<Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="350dp"
    android:layout_marginBottom="160dp"
    android:gravity="center"
    **android:onClick="onStart"**
    android:text="Start"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent" />

<TextView
    android:id="@+id/textViewCO"
    android:layout_width="53dp"
    android:layout_height="14dp"
    android:layout_marginEnd="350dp"
    android:layout_marginBottom="408dp"
    **android:text="Test"**
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent" />

Вот код, который я сейчас настроил для попытки выполнить работу.

            while (btSocket.isConnected()) {

            //reading the bluetooth input
            info = inputStream.read(buffer);
            //assigning read value from the buffer to a string 
            String readMessage = new String(buffer, 0, info);

            //New textview object
            TextView tv = (TextView) findViewById(R.id.textViewCO);
            //Display variable
            tv.setText(readMessage);
            //Console log
            System.out.println(readMessage);


            try {
                Thread.sleep(3200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

Что я пробовал , Я попытался просто отобразить текст, например

tv.setText("This is some text");

Однако это также ничего не меняет. Если вам нужен какой-либо другой код или информация, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 03 апреля 2020

кажется, что вы выполняете свой код в потоке, иногда это может повлиять на производительность пользовательского интерфейса, попробуйте использовать задачи ASYN C и, если это не удастся, попробуйте прокрутить родительское представление после выполнения кода с помощью метода scrollBy ,

...