[英]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.