我有一个MainActivity和一个AsyncTask MyTask。他们是分开的班级。在MyTask中,我想更新MainActivity中的TextView。如何从公共AsyncTask获取MainActivity TextView?
这似乎很容易,如果MyTask在MainActivity的内部类中,因为我可以只调用findViewById()。但是现在这两个类是分开的。
所以在我的MainActivity我这样做:
MyTask myTask=new MyTask();
Context context=this.getApplicationContext();
myTask.execute(context);
而我的任务是这样的:
public class MyTask extends AsyncTask<Context, Void, Void>
{
TextView mText;
protected Void doInBackground(Context... params) {
Context context=params[0];
mText = (TextView) ((MainActivity)context).findViewById(R.id.text);
...
}
}
我知道了“多行文字=(TextView的)((MainActivity)上下文).findViewById (R.id.text);”是错误的,但我还没有找到解决方案。
任何提示
由于提前
有一个ClassCastException当我试图找到 – 2012-02-28 20:09:03
你得到一个ClassCastException,因为你传递的应用程序环境,而不是TextView的活动。在你的例子中,替换'myTask.execute(context);' 'myTask.execute(this);' – gngr44 2012-02-28 20:16:42