在setOnclicklistener函数中使用或执行sleep

时间:2014-04-27 10:48:37

标签: java android

我编写了一个程序,我希望按顺序点击按钮执行以下操作:     1.在textview中显示文本(例如:" abc")。     2.暂停一段时间(例如:2000)。     3.最后它必须在textview中更改文本(例如:" xyz")。 为此我尝试下面的代码。当我运行它时,首先它睡眠2000毫秒并显示" xyz",它不显示" abc" ... ( *我注意到睡眠将首先在setOnclickListner()函数中排除,然后只有其余的代码正在执行* ) 请帮我按顺序执行动作......

如果我的问题很愚蠢,请原谅我刚接触这个......

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {


Button b1;
TextView tv;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv =(TextView)findViewById(R.id.textView1);
    b1=(Button)findViewById(R.id.button1);
    b1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            tv.setText("abc");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {  
                e.printStackTrace();
            }

            tv.setText("xyz");
        }
    });
          }}}

1 个答案:

答案 0 :(得分:0)

使用Handler.postDelayed代替Thread.sleep冻结2000的主要UI主题。使用Handler执行相同操作:

创建Runnable:

private Runnable runnable = new Runnable() {
        public void run() {
         tv.setText("xyz");
          mHandler.removeCallbacks(runnable); 
        }
    };

按钮点击:{/ p>调用Handler.postDelayed

mHandler = new Handler();
b1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            tv.setText("abc");

            mHandler.postDelayed(runnable, 2000);  
        }
    });