[英]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.