【问题标题】:How to use an Android Handler to update a TextView in the UI Thread?如何使用 Android 处理程序更新 UI 线程中的 TextView?
【发布时间】:2013-03-19 02:55:43
【问题描述】:

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

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

【问题讨论】:

    标签: android


    【解决方案1】:

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

    这是一个示例,它允许单个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);
    

    【讨论】:

    【解决方案2】:

    您也可以通过这种方式从后台线程更新 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);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多