0

textView で一度に 1 つの単語を印刷してから、sleep を使用してから次の単語を印刷したいと考えています。しかし、それは機能していません..助けが必要です。

    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

代わりにハンドラーを使用してみてください。

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 に答える
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 に答える