-2

我使用了vogella websiteAsyncTask中的示例,我用它创建了一个类文件。我正在调用它来更新邮政编码,它正在工作。Activity ATextView

我想知道如何调用它AsyncTaskActivity B更新另一个邮政编码TextView

所以AsyncTask1、2调用不同Activities,更新不同TextViews

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

提前致谢

4

2 回答 2

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 的引用最终可能会从您的活动中泄漏内存。

于 2012-12-04T19:34:02.203 回答
0

这里我不好,但你可以试试

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

于 2012-12-04T19:33:12.063 回答