Итак, в настоящее время я нахожусь на ранней стадии написания приложения Android в Java, используя Android Studio. У меня есть MainActivity, который состоит из TextView и Button.
Идея состоит в том, что когда я нажимаю кнопку, объект-объект извлекается из базы данных комнаты, а элемент-строка извлекается из объект, а затем используется для установки нового текста для TextView. Я бы предпочел сделать это таким образом, чтобы при нажатии кнопки из базы данных извлекался новый объект и обновлялся TextView, и все это без необходимости запускать новое действие.
Метод onClick для кнопки В своей первой версии выглядело примерно так:
private void getFoo() {
Foo foo = db.fooDao().getRandom();
String fooName = foo.getFooName();
textFoo.setText(fooName);
}
Первая проблема заключалась в том, что я попытался получить объект из базы данных как есть, в основном потоке, что не понравилось компилятору. Пытался обернуть взаимодействие с базой данных в отдельный поток, но тогда мне пришлось либо выяснить, как сделать значение, полученное внутри потока, доступным за его пределами, либо мне пришлось вложить вызов runOnUiThread в мой метод Thread run () .
У меня были смешанные результаты: с одной конфигурацией вы могли видеть, что новый текст отображается на экране, и через долю секунды после этого приложение вылетало.
Могу ли я сделать эту работу как обновление моего представления в рамках того же действия, или я должен вместо этого просто начать новый?