如何在点击一下后将关键点设置为24小时

时间:2018-04-08 18:51:37

标签: android android-asynctask kotlin sharedpreferences

我已经设置了一个按钮单击以执行某些后台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()
            }

   }

1 个答案:

答案 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次之间的差异从偏好中获取时间并启动计时器。