来自AsyncTask的多个TextView的Android setText

时间:2012-12-04 19:23:54

标签: android android-asynctask

我使用了vogella website中的AsyncTask示例,我用它创建了一个类文件。 我是从Activity A调用它来更新邮政编码的TextView,它正在运作。

我想知道如何从AsyncTask拨打相同的Activity B来更新其他邮政编码TextView

一个AsyncTask,来自不同Activities的2个来电更新不同的TextViews

我要做点什么onPostExecute(),对吗? 一些示例代码非常感谢。

提前致谢

2 个答案:

答案 0 :(得分:3)

您可以(我猜)在实例化时将TextView传递给AsyncTask。

所有没有IDE打开的人如果语法关闭就道歉......

public class ExampleTask extends AsyncTask<Void, Void, Void> {
    private TextView targetTextView;

    public ExampleTask(TextView target) {
     targetTextView = target;
    }

    @Override
    protected String doInBackground(Void... orSomething) {
      //do work and get a value I guess
    }

    @Override
    protected void onPostExecute(String result) {
      targetTextView.setText(result);
    }
  }

然后你会这样称呼:

ExampleTask task = new ExampleTask(theTextViewToUpdate);
task.execute();

您需要注意实例化的任务对象的范围,因为对TextView的引用最终可能会从您的活动中泄漏内存。

答案 1 :(得分:0)

我不是很好,但您可以尝试

可以为不同的活动重用AsyncTask。 为此,您必须从不同的活动中获取不同的参数。 在AsyncTask类中,使用case参数(在其他活动中描述)启动一个构造函数,该参数将决定,它由Activity A或B或C调用。 现在使用switch case语句并继续前进。