TextView不会从Android中的循环更新

时间:2014-10-28 06:20:51

标签: java android multithreading loops textview

我有一个简单的应用程序,当我点击按钮时,它会从循环中生成的值更新TextView

但是当我运行应用程序时,它只会显示TextView中的最后一个数字。我添加了一个Thread.sleep()以减慢循环,但它不起作用,仍然是相同的结果。我在这做错了什么?谢谢你的推荐

public class MainThread extends ActionBarActivity {
    Button btnShow;
    TextView txtSee;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_thread);

        btnShow = (Button) findViewById(R.id.btnShow);
        txtSee = (TextView) findViewById(R.id.txtSee);

        btnShow.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                try {
                    for (int i = 0; i <= 5; i++) {

                        String text1 = "Iteration No " + i + " occured";
                        txtSee.setText(text1);
                        Thread.sleep(2000);
                    }

                } catch (InterruptedException e) {
                }
            }
        });
    }

    ....
}

2 个答案:

答案 0 :(得分:1)

使用

 txtSee.append(text1);

而不是

 txtSee.setText(text1);

您的循环执行得太快,无法让您观察更改

答案 1 :(得分:0)

在循环内调用另一个函数并使用         该职能内部txtSee.setText(text1);

               or (int i = 0; i <= 5; i++) {

                            String text1 = "Iteration No " + i + " occured";
                            call_function(text1,txtSee);

                        }

call_function: -

call_function(String text1,TextView txtSee;){
                      txtSee.setText(text1);
                        Thread.sleep(2000);
                       }