繁体   English   中英

无法更改Java类内部的TextView可见性(android)

[英]Cannot change TextView visibility inside Java class (android)

我有一个名为DataNode的类,它将在AsyncTask实例化。 好吧。

但是,如果任务失败,我想显示一个错误,如果成功,我想显示一个标题。 因此, DataNode类内部,我有一个名为onOk()的方法,该方法将由Async调用。

我已经在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)

我已经读过另一个主题,但是没有一个回答我的问题。

public void onOk(){
    runOnUiThread(new Runnable() {
          public void run() {
              TextView view = (TextView) findViewById(R.id.lblRealTime);
              view.setVisibility(View.VISIBLE);
          }
    });

}

您的DataNode既不是Activity也不是Fragment ,因此也就没有定义findViewById()方法也就不足为奇了。 实现用例的一种方法是在创建TextView时将其传递给DataNode

class DataNode {

  final WeakReference<TextView> textViewRef;

  DataNode(TextView textView) {
    this.textViewRef = new WeakReference<>(textView);
  }
}

然后,在onOk()使用TextView

public void onOk(){
  TextView textView = textViewRef.get();
  if (textView != null) {
    textView.setVisibility(View.VISIBLE);
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM