我想在textView中发布我的AsyncTask(一个字符串)的结果。
这是我的主要内容:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ReadRss readRss=new ReadRss(this);
readRss.execute();
......
}
这是我的AsyncTask:
public class ReadRss extends AsyncTask<Void,Void,Void> {
public ReadRss(Context context){
}
@Override
protected void onPreExecute() {
}
@Override
protected void onPostExecute(Void aVoid) {
}
@Override
protected Void doInBackground(Void... params) {
ProcessXml();
return null;
}
private void ProcessXml() {
//HERE CREATE MY STRING
String myresult="example";
TextView txt_ris = (TextView)findViewById(R.id.txt_ris); <---HOW CAN I DO THIS?
txt_ris.setText(myresult);
}
}
}
}
FindViewById不能在AsyncTask中工作,那么如何在这里获取TextView? 也许我可以把它作为AsyncTask中的一个寄生者传递,语法是什么?
答案 0 :(得分:2)
您需要在b779
方法中放置UI工作,因为doInBackground在非UI线程中执行
onPostExecute
答案 1 :(得分:1)
为了正确引用TextView,您需要一个上下文,并且您已经在AsyncTask构造函数中引用了启动Activity,因此您可以执行以下操作:
public class ReadRss extends AsyncTask<Void,Void,Void> {
private TextView tv;
private YourStartingActivity activity;
public ReadRss(Context context){
activity = (YourStartingActivity)context;
tv = (TextView)activity.findViewById(R.id.txt_ris)
}
@Override
protected void onPreExecute() {
...
}
@Override
protected void onPostExecute(Void aVoid) {
(follow Michael Spitsin instructions here)
}
@Override
protected Void doInBackground(Void... params) {
...
}
}