Невозможно изменить видимость 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);
          }
    });

}
Другие вопросы по тегам