簡體   English   中英

如何使按鈕一天只能單擊一次

[英]How to make a Button clickable only once in a day

我有一個按鈕,客戶可以通過該按鈕索取他的每日獎勵。 我希望每天只單擊一次該按鈕。 我該怎么辦?

我不知道如何實現此功能

我知道我可以將其設置為View.gone,但我希望第二天再次顯示它。單擊按鈕以獲取一天時間應該是什么

單擊我的按鈕后該怎么辦?

@Override
public void onClick(View v) {
    super.onClick(v);
    switch (v.getId()) {
    case R.id.creditClaimBT: {

        break;
    }
    }
}

幫助將不勝感激。

單擊按鈕后,將事件的日期寫入SharedPreferences。 如果有人單擊該按鈕,請檢查當前日期是否已經保存在SharedPreferences中。 做完了

我認為最好的方法是使用ZerO之類的sharedPreferences。 例如,每次用戶打開按鈕所在的活動時,請檢查sharedPrefs,例如,您保存日期的位置。 單擊按鈕后,保存當前日期。 並且每次打開活動並且保存的日期等於當前日期時,都不要單擊按鈕(可以使用View.GONE或setEnabled(false)進行此操作):

  private boolean firstTimeUsed = false;
  private String firstTimeUsedKey="FIRST_TIME";

  private String sharedPreferencesKey = "MY_PREF";
  private String buttonClickedKey = "BUTTON_CLICKED;
  private SharedPreferences mPrefs;
  private long savedDate=0;

初始化它們以在onCreate()中設置全局變量:

  mPrefs = getSharedPreferences(sharedPreferencesKey, Context.MODE_PRIVATE);
  savedDate = mPrefs.getLong(buttonClickedKey,0);
  firstTimeUsed = mPrefs.getBoolean(firstTimeUsedKey,true);//default is true if no value is saved
  checkPrefs();

  mButton.setOnClickListener(new OnClickListener(){

     @Override
     public void OnClick(View v){

           //things You want to do, after that:

          saveClickedTime();
     }
  });

做您的方法資料來檢查時間:

  private void checkPrefs(){


      if(firstTimeUsed==false){
      if(savedDate>0){

      //create two instances of Calendar and set minute,hour,second and millis
      //to 1, to be sure that the date differs only from day,month and year

      Calendar currentCal = Calendar.getInstance();
      currentCal.set(Calendar.MINUTE,1);
      currentCal.set(Calendar.HOUR,1);
      currentCal.set(Calendar.SECOND,1);
      currentCal.set(Calendar.MILLISECOND,1);

      Calendar savedCal = Calendar.getInstance();
      savedCal.setTimeInMillis(savedDate); //set the time in millis from saved in sharedPrefs
      savedCal.set(Calendar.MINUTE,1);
      savedCal.set(Calendar.HOUR,1);
      savedCal.set(Calendar.SECOND,1);
      savedCal.set(Calendar.MILLISECOND,1);

      if(currentCal.getTime().after(savedCal.getTime()){

        mButton.setVisibility(View.VISIBLE);
      }else if(currentCal.getTime().equals(savedCal.getTime()){

          mButton.setVisibility(View.GONE);
     }

   }
 }else{

     //just set the button visible if app is used the first time

      mButton.setVisibility(View.VISIBLE); 

  }

}

每當按鈕可用並被單擊時,將日期保存回sharedPrefs:

       private void saveClickedTime(){

       Editor mEditor = mPrefs.edit();
       Calendar cal = Calendar.getInstance(); 
       long millis = cal.getTimeInMillis();
       mEditor.putLong(buttonClickedKey,millis);
       mEditor.putBoolean(firstTimeUsedKey,false); //the button is clicked first time, so set the boolean to false.
       mEditor.commit();

       //hide the button after clicked
       mButton.setVisibility(View.GONE);

      }

這只是從頭開始,目前尚未經過測試,但是應該讓您知道如何進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM