Android通过Handler在单独的线程上更新TextView

时间:2013-01-06 17:01:13

标签: android multithreading textview android-edittext handler

我目前正在开发我的第一款适用于Uni的Android应用。我正慢慢地到达那里,但我被困在某个部分。

课程作业需要一个与UIthread不同的线程。我的想法是用户可以在Name_edit.java中设置他们的名字然后当他们去board.java(一个不同的活动)时,两个textview现在显示输入的内容

在Name_edit.xml中,我有两个edittexts。

在board.java中我有两个textview(目前分别设置为P1和P2)。在OnCreate()中,我正在处理一个处理程序,以从(name_edit)两个edittexts中获取两个值,并将其设置为textviews。我相信这将需要两个处理程序(每个值一个)。在board.java中,我完成了标准的findViewById。

有关处理程序和线程的任何帮助都会有所帮助。

我会发布我的处理程序代码,但它是当前不断变化的。我正在做的是

handler = new Handler() {
    public void handleMessage (Message msg) {
        TextViewP1.setText(msg)
    }
};

注意msg当前未设置为name_edit

的edittext

1 个答案:

答案 0 :(得分:1)

你试过runOnUiThread()吗? UI元素只能从UI线程更改,并且此处理程序在其自己的线程上运行。

handler = new Handler() {
    public void handleMessage (Message msg) {
        ((Activity)context).runOnUiThread(new Runnable() {
            public void run() {
               TextViewP1.setText(msg);
            }
        });
    }
}

如果您的处理程序位于您的Activity类中,则context可以替换为[class name].this

文档:http://developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable