我有一个名为DataNode
的类,它将在AsyncTask
内实例化。那好吧。
但是,如果任务失败,我想显示错误,如果成功,我想显示标题。
那么,在DataNode
类内部,我有一个名为onOk()
的方法,将由异步调用。
我已经将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)
我已经阅读了其他主题,但没有人回答我的问题。
答案 0 :(得分:0)
public void onOk(){
runOnUiThread(new Runnable() {
public void run() {
TextView view = (TextView) findViewById(R.id.lblRealTime);
view.setVisibility(View.VISIBLE);
}
});
}
答案 1 :(得分:0)
您的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);
}
}