Подскажите пожалуйста, в чем может быть проблема: не заменяется текст в TextView (проверял, ID ресурсов не пересекаются):
public void updateUserName(TextView textView) {
String str = textView.getText().toString();
System.out.println("before_ " + str);
textView.setText("my_name");
str = textView.getText().toString();
System.out.println("after_ " + str);
}
Путем вывода текстов в консоль, я выявил, что textView изменяет свое значение (т.е. getText возвращает "my_name"). Однако, в самом приложении изменений не происходит. Быть может, неправильный идентификатор ресурса TextView я передаю?
Я его получаю в LoginActivity в методе onCreate (src_name, src_email и src_avatar объявлены в начале класса LoginActivity как private TextView и private ViewImage):
NavigationView navigationView = findViewById(R.id.navigation_view); // получаем ID ресурса
src_name = navigationView.getHeaderView(0).findViewById(R.id.nav_drawer_header_username); // получаем ID имени
src_email = navigationView.getHeaderView(0).findViewById(R.id.nav_drawer_header_useremail); // получаем ID почты
src_avatar = navigationView.getHeaderView(0).findViewById(R.id.nav_drawer_header_useravatar); // получаем ID аватара
Затем передаю в функцию создания пользователя (оттуда уже и вызывается первоначальный updateUserName с до сих пор передаваемыми аргументами src_name, src_email и src_avatar).
Одна из причин такого поведение - попытка изменения интерфейса из другого потока. Для корректной работы с некоторыми элементами и обновления содержимого можно использовать следующий код:
public void UpdateUI() {
try {
((Activity) this).runOnUiThread(new Runnable() {
@Override
public void run() {
/// code here...
}
});
} catch (Exception ex) {
Log.d("UI ERROR", ex.getMessage());
}
}
Если метод находится вне класса активити - передавайте так же ссылку и на неё. Ниже код вашей функции с изменениями
public void updateUserName(final TextView textView, Activity activity) {
try {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
String str = textView.getText().toString();
System.out.println("before_ " + str);
textView.setText("my_name");
str = textView.getText().toString();
System.out.println("after_ " + str);
}
});
} catch (Exception ex) {
Log.d("UI ERROR", ex.getMessage());
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть приложение и в приложении есть игровые монеты, теперь, я хочу сделать, чтоб по кнопке предлагалось подписаться на канал в Yotube и за подписку...
Вступление: Есть консольное приложение (JRE16 !!!), в нем создается конфигурация для будующих дочерних потоков, в нем можно запускать дочерние...
Помогите исправить ошибку в следующем методе:
нужно сериализовать класс в виде массива байтов без "built-in serialization api" те