android-TextView文本未更新

package com.aviyehuda.test.multithreading;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MultithreadingTest extends Activity {
Button btn;
private Handler myHandler;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    btn = (Button) findViewById(R.id.Button01);
}

public void buttonClicked(View v) {
    myHandler = new Handler();
    MyThread mThread = new MyThread();
    mThread.start();
}

class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 30; i++) {
            myHandler.post(new NewThreaad(i));
        }
    }
}
class NewThreaad implements Runnable{
    int i;
    public NewThreaad(int n) {
        i=n;
    }
        @Override
        public void run() {
            ((TextView) findViewById(R.id.TextView01)).setText("Hello:"+i);
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
}
}

我有上面提到的代码,但是在TextView上获得结果Hello29,但是我希望Hello1,Hello2,hello3 …………….. Hello29自动一对一

请给我提示我做错了什么

解决方法:

您需要在发布消息之间将500 ms延迟移至for循环.我认为您期望这些消息一个接一个地依次执行,但是它们却不会,因此这就是您只看到最后一个消息的结果的原因.

上一篇:android-TextView不见了,Button是可见的


下一篇:java-如何获取Android EditText组件的值作为整数?