如何禁用按钮让我们说30分钟?我正在尝试这个:
new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
btn.setEnabled(false);
btn.setText("fdfjhsn" + millisUntilFinished / 1000);
}
public void onFinish() {
btn.setEnabled(true)
}
}.start();
但这并不像我想的那样有用。当我更改活动并通过倒计时返回到此活动时,按钮将变为启用状态。 你能告诉我如何实时阻止按钮,与用户无关吗?在此先感谢;)
答案 0 :(得分:3)
你的逻辑中有一些错误:
new CountDownTimer(30000, 1000)
将倒数30,000毫秒,即30秒
退出应用程序时计时器将停止并重新启动,因为您没有将值保留在任何位置
您需要做的是,当您想要开始30分钟时段时,请将当前时间保存在SharedPreference
:
SharedPreferences prefs = this.getSharedPreferences("time", Context.MODE_PRIVATE);
long currentTime = new Date().getTime();
SharedPreferences.Editor editor = prefs.edit();
editor.putLong("time", currentTime);
editor.apply();
btn.setEnabled(false);
现在,只要您想要返回应用程序(在onCreate
和onResume
中),检索该值并检查同时是否超过半小时:
SharedPreferences prefs = this.getSharedPreferences("time", Context.MODE_PRIVATE);
long previousTime = prefs.getLong("time", 0);
long currentTime = new Date().getTime();
// 30*60*1000 - 30 min, each with 60 sec, each with 1000 millisec
if (currentTime - previousTime > 30*60*1000){
//enable the button
btn.setEnabled(true);
} else {
//disable it and start a new CountdownTimer; this is needed in order for
//it to to become enabled if you're still in the app and the time ran out
btn.setEnabled(false);
new CountDownTimer(currentTime - previousTime, 1000){
public void onTick(long millisUntilFinished) {
btn.setText("fdfjhsn" + millisUntilFinished / 1000);
}
public void onFinish() {
btn.setEnabled(true)
}
}.start();
答案 1 :(得分:0)
保存/到持久性的时间戳,例如保存到共享首选项。下次开始活动时,只需检查" disabled-to"时间戳。