#java #android
#java #Android
Вопрос:
У меня есть вращающееся колесо для призов. Я хочу установить ограничение на количество кликов в день. Например, 5 кликов в день. Я просто хочу, чтобы пользователь нажимал только 5 раз в день и отключал событие щелчка на этот день впоследствии. Щелчки будут повторно включены на следующий день.
ImageView imageView = findViewById(R.id.imageView11);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
final SharedPreferences coins = getSharedPreferences("Rewards", MODE_PRIVATE);
final LuckyWheelView luckyWheelView = (LuckyWheelView) findViewById(R.id.luckyWheel);
findViewById(R.id.play).setEnabled(true);
findViewById(R.id.play).setAlpha(1f);
calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
weekday = calendar.get(Calendar.DAY_OF_WEEK);
todayString = year "" month "" day;
final SharedPreferences spinChecks = getSharedPreferences("SPINCHECK",0);
final boolean currentDay = spinChecks.getBoolean(todayString, false);
Комментарии:
1. Глупым способом было бы сохранить сделанные ими вращения и время последнего вращения в базе данных и проверять его каждый раз, когда они вращаются.
Ответ №1:
Это можно легко сделать с помощью SharedPrefs.
private void TestDate(String todayString) {
final SharedPreferences spinChecks = getSharedPreferences("SPINCHECK",0);
if(spinChecks.getString("date","").equals(todayString)){
if(spinChecks.getInt("count",0)<5){
spinChecks.edit().putInt("count",spinChecks.getInt("count",0) 1).apply();
System.out.println("Allow : date " todayString " count " spinChecks.getInt("count",0));
}else{
System.out.println("Do not Allow : date " todayString " count " spinChecks.getInt("count",0));
}
}else{
spinChecks.edit().putString("date",todayString).apply();
spinChecks.edit().putInt("count",1).apply();
System.out.println("Allow : date " todayString " count " spinChecks.getInt("count",0));
}
}
выше приведено лишь приблизительное представление о том, как это сделать.
еще одна вещь, которую вы можете сделать, это сохранить всю историю в Sqlite и запросить базу данных для подсчета записей за этот конкретный день.
Конечно, это займет некоторое место, но вы можете показать историю пользователю, сохранив ее в sqlite. Приведенные выше ответы хороши, но имеют недостаток, например, если пользователь очистит / удалит данные, он сможет снова выполнять вращения. для этого я бы посоветовал вам сохранить ежедневное количество в удаленной базе данных и запрашивать его каждый раз, когда пользователь нажимает на кнопку вращения