Android Media Player:每隔1秒在文本视图中显示数组中的单词

Android Media Player:每隔1秒在文本视图中显示数组中的单词,android,textview,Android,Textview,我正在尝试以1秒的间隔显示数组中的单词。我有以下代码: final TextView tv = new TextView(this); setContentView(tv); final MediaPlayer mPlayer = MediaPlayer.create(this, R.raw.nicholas); try { mPlayer.prepare(); } catch (IllegalStateException e) {

我正在尝试以1秒的间隔显示数组中的单词。我有以下代码:

    final TextView tv = new TextView(this);

    setContentView(tv);

    final MediaPlayer mPlayer = MediaPlayer.create(this, R.raw.nicholas);

    try {
        mPlayer.prepare();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }






    mPlayer.start();
    tv.setText("Playing...");


    Thread thread = new Thread()
    {
        @Override
        public void run() {

            try {

                String words[] = {
                        "Nicholas ",// 0
                        "was ", // 1
                        "older ",// 2
                        "than ",// 3
                        "sin ",// 4
                        "and ",// 5
                        "his ",// 6
                        "beard ",// 7
                        "could ",// 8
                        "go ",// 9
                        "no ",// 10
                        "whiter. "// 11
                };

                int x = 0;
                while(x <= 11) {

                    sleep(1000);
                    tv.append(words[x]);
        x++;
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };

    thread.start();

}
final TextView tv=新的TextView(此);
设置内容视图(电视);
final MediaPlayer=MediaPlayer.create(this,R.raw.nicholas);
试一试{
mPlayer.prepare();
}捕获(非法状态){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
mPlayer.start();
tv.setText(“播放…”);
线程线程=新线程()
{
@凌驾
公开募捐{
试一试{
字符串[]={
“尼古拉斯”//0
“was”//1
“旧的”//2
“than”//3
“罪”//4
和“//5
“他的”//6
“胡子”//7
“可以”//8
“走”//9
“否”//10
“更白。”//11
};
int x=0;
而(x您无法从非主线程更新UI(tv.append()。
请使用通知主线程进行更新。

前,

你忘了启用盖曼
mHandler.post(new Runnable(){
    public void run(){
        tv.append(words[x]);            
    }    
});