9

我想TextView从 Android 应用程序中的异步任务更新 a。用 a 执行此操作的最简单方法是什么Handler

有一些类似的问题,例如:Android update TextView with Handler,但例子很复杂,似乎没有答案。

4

2 回答 2

22

有几种方法可以更新您的 UI 并从 UI 线程外部修改一个View,例如。TextViewAHandler只是一种方法。

这是一个示例,它允许单个Handler响应各种类型的请求。

在类级别定义一个简单的Handler

private final static int DO_UPDATE_TEXT = 0;
private final static int DO_THAT = 1;
private final Handler myHandler = new Handler() {
    public void handleMessage(Message msg) {
        final int what = msg.what;
        switch(what) {
        case DO_UPDATE_TEXT: doUpdate(); break;
        case DO_THAT: doThat(); break;
        }
    }
};

在您的一个函数中更新 UI,该函数现在位于 UI 线程上:

private void doUpdate() {
    myTextView.setText("I've been updated.");
}

从您的异步任务中,向Handler. 有几种方法可以做到这一点。这可能是最简单的:

myHandler.sendEmptyMessage(DO_UPDATE_TEXT);
于 2013-03-28T15:25:16.677 回答
4

您也可以通过这种方式从后台线程更新 UI 线程:

Handler handler = new Handler(); // write in onCreate function

//below piece of code is written in function of class that extends from AsyncTask

handler.post(new Runnable() {
    @Override
    public void run() {
        textView.setText(stringBuilder);
    }
});
于 2016-09-07T04:53:14.287 回答