我编写了一个程序,我希望按顺序点击按钮执行以下操作: 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");
}
});
}}}
答案 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);
}
});