我已经设置了一个按钮单击以执行某些后台API服务,在3次单击后,我希望该按钮被禁用并且仅在24小时后启用。我执行了以下代码但是无法禁用它。这里。 ..
companion object {
var clickCount = 0
const val SAVED_TIME = "Time is saved"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val convert: Button = findViewById(R.id.Cbutton)
val toolbar = findViewById<Toolbar>(R.id.toolbar)
setSupportActionBar(toolbar)
inputAmount = findViewById(R.id.editText)
inputAmount!!.textSize = 30f
spin = findViewById(R.id.spin)
birr = findViewById(R.id.converted)
birr!!.text = getString(R.string.initialValue)
progressIndicator = findViewById(R.id.progressBar)
statusBarColorChange()
connectionStatusUpdate()
currencyListAdapterExecute()
convert.setOnClickListener {
val sharedPrefs = applicationContext.getSharedPreferences(SAVED_TIME,Context.MODE_PRIVATE)
if (inputAmount!!.text.isNotEmpty() && connected) {
val dateNow = Date().time
val savedDateTime = sharedPrefs.getLong("time",0)
if(savedDateTime == dateNow){
convert.isEnabled = false
}
clickCount += 1
if(clickCount < 4){
FetchedJsonData(this).execute()
}
else {
val exactTime = Date().time
sharedPrefs.edit().putLong("time",exactTime).apply()
}
}
答案 0 :(得分:0)
您可以通过以下代码将时间存储在共享偏好中。
SharedPreferences settings = c.getSharedPreferences(PREFS_NAME, 1);
SharedPreferences.Editor editor = settings.edit();
editor.putString("click_time", your_time);
每当需要比较时,只需将当前时间与优先存储的时间进行比较。检查时间差是否小于24小时。
从偏好中抽出时间:
SharedPreferences settings = c.getSharedPreferences(PREFS_NAME, 1);
String storedTime=settings.getString("clic_time", "");
在几小时内获得好处:
Date current, Date previous;
long diff = current.getTime() - previous.getTime();
long hours= diff / (60*60 * 1000);
要显示计时器,当应用程序来自后台时,您可以通过使用2次之间的差异从偏好中获取时间并启动计时器。