我有一个按钮名称 btnOk ,在此按钮内我有一个正常的方法。
我的想法是,经过一段时间后,此按钮内的方法将自动执行。
所以我创建了一个处理程序来延迟我的功能。我希望编程的工作方式如下:
以下是逻辑:
用户可以点击按钮Ok => 20秒后,如果用户没有点击 button =>运行方法
我的问题是,每次运行此迭代时,20秒计算为总数。
例如:
再次,从活动A到B,这次我预期的方法必须在20s后运行,但仅在5s之后(我猜第一次15s +第2次开始后5s将被计为总数20),它会自动执行。
@Override
protected void onCreate(Bundle savedInstanceState) {
//Do something
value();
//Create handler
final Handler handler = new Handler();
//Run method automatically after 20s
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Do something after 5s = 5000ms
submitResult();
}
}, 20000);
//Wait for user clicks,
//must start in 20s or submitResult(); will be executed automatically
btn = (Button) findViewById(R.id.btnOk);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
submitResult();
}
});
}
任何人都可以帮我解决问题吗?或任何方式在一段时间后自动点击?
我真的很感激你的帮助。提前谢谢。
答案 0 :(得分:0)
这将是第一个Handler
运行,而不是新的(在第二个活动B中创建)。如果用户点击该按钮,您应该"取消"处理程序,否则它将运行submitResult()
两次。
试试这个:
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
handler.removeCallbacks(null);
submitResult();
}
});