0

我想在 textView 中一次打印一个单词,然后使用 sleep 和下一个单词。但它 int'n 工作.. 需要帮助。

    String s = MainActivity.check;// String check defined in mainactivity this is second
    String[] words = s.split(" ");
    EditText et = (EditText) findViewById(R.id.editText2);

    for(int i=0;i<words.length; i++ ){
        et.setText(words[i]);
        Thread.sleep(1000);
    }

以上仅输出 textView 中的最后一个单词

4

4 回答 4

1

您在每次迭代中设置新的文本。试试 et.setText(et.getText() + words[i]); 这需要 TextView 中已经存在的文本,然后附加新单词。

于 2013-02-25T08:18:37.727 回答
0

好的,这是你的答案:

int i = 0;
Handler handler = new Handler();

        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                textView.setText(""+i);
                i++;
                handler.postDelayed(this, 1000);
            }
        }, 1000);
于 2013-02-25T12:34:01.183 回答
0

尝试使用处理程序:

for(int i=0;i<words.length; i++ ){
   final int j = i;
   String text = words[j];
   new Handler().postDelayed(new Runnable() {
        public void run() {
            et.setText(text);
        }
    }, 1000);
}
于 2013-02-25T08:20:54.603 回答
0

Android 应用程序中 UI 的任何更新都必须发生在 UI 线程中。如果您生成一个线程在后台执行工作,您必须在触摸视图之前将结果编组回 UI 线程。

您必须使用 Handler 类来执行此操作...

public EditText et;
Handler handler;
oncreate(..) {
    setContentView(R.layout.main);
    et = new EditText(context);
    Thread t =new Thread(){
        public void run() {
            handler.post(new Runnable() {
                public void run() {
                    et.setText("test");
                }
            });
        }
    }};
    t.start();
}
于 2013-02-25T08:21:19.070 回答