Невозможно изменить видимость TextView внутри класса Java (Android)
У меня есть класс с именем DataNode
который будет создан внутри AsyncTask
, Хорошо, тогда.
Но я хочу показать ошибку, если задание не выполнено, или название, если оно выполнено успешно. Итак, внутри DataNode
класс у меня есть метод с именем onOk()
это будет вызвано Async.
Я уже создал экземпляр Title/Errors в файле таблицы стилей XML как невидимый и просто хочу показать их.
Я пытаюсь сделать (в примере заголовка):
public void onOk(){
TextView view = (TextView) findViewById(R.id.lblRealTime);
view.setVisibility(View.VISIBLE);
}
Но я получаю ошибку: Error:(29, 36) error: cannot find symbol method findViewById(int)
Я уже прочитал другие темы, но никто не ответил на мою проблему.
2 ответа
Ваш DataNode
не является Activity
ни Fragment
так что не удивительно, что он не имеет findViewById()
метод определен. Один из способов реализовать ваш вариант использования - передать TextView
в DataNode
при его создании:
class DataNode {
final WeakReference<TextView> textViewRef;
DataNode(TextView textView) {
this.textViewRef = new WeakReference<>(textView);
}
}
затем используйте TextView
в onOk()
:
public void onOk(){
TextView textView = textViewRef.get();
if (textView != null) {
textView.setVisibility(View.VISIBLE);
}
}
public void onOk(){
runOnUiThread(new Runnable() {
public void run() {
TextView view = (TextView) findViewById(R.id.lblRealTime);
view.setVisibility(View.VISIBLE);
}
});
}