android - 如何在android中每小时旋转三次
问题描述
我在 android 中创建了一个旋转轮游戏,并希望允许用户在一小时内玩 3 次,即在 24 小时内每小时玩 3 次。我无法实现这个逻辑。我已经编写了这段代码并在播放按钮上应用了 onclick 监听器。
findViewById(R.id.play).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//PrefManager prefManager=new PrefManager(SpinWheel.this);
if (enableButton) {
SharedPreferences settings = getSharedPreferences("PREFS", 0);
long previousTime = settings.getLong("time", 0);
long currentTime = System.currentTimeMillis();
if (previousTime == 0) {
//prefManager.setCount(1);
int index = getRandomIndex();
luckyWheelView.startLuckyWheelWithTargetIndex(index);
SharedPreferences.Editor editor = settings.edit();
editor.putLong("time", (System.currentTimeMillis()));
editor.commit();
return;
}
long diff = currentTime - previousTime;
//Toast.makeText(SpinWheel.this, "diff: "+diff+"prefCount: "+click, Toast.LENGTH_SHORT).show();
if (diff>=3600000)
{
int click=1;
Toast.makeText(SpinWheel.this, "inside", Toast.LENGTH_SHORT).show();
if (click<=3)
{
SharedPreferences.Editor editor = settings.edit();
editor.putLong("time", (System.currentTimeMillis()));
editor.commit();
int index = getRandomIndex();
luckyWheelView.startLuckyWheelWithTargetIndex(index);
//prefManager.setCount(2);
click++;
}
else
{
Dialogs.errorDialog(SpinWheel.this, getString(R.string.limit), "You can only play thrice in an hour.", false, false, "", getResources().getString(R.string.ok2), new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
sweetAlertDialog.dismissWithAnimation();
finish();
}
});
}
}
else {
/*AlertDialog alert = new AlertDialog.Builder(SpinWheel.this).create();
alert.setTitle(getString(R.string.limit));
alert.setMessage("You can only play once in an hour.");
alert.setCanceledOnTouchOutside(false);
alert.setIcon(android.R.drawable.ic_dialog_alert);
alert.setButton(getString(R.string.ok2), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
alert.show();*/
Dialogs.errorDialog(SpinWheel.this, getString(R.string.limit), "You can only play once in an 3 hour.", false, false, "", getResources().getString(R.string.ok2), new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sweetAlertDialog) {
sweetAlertDialog.dismissWithAnimation();
finish();
}
});
}
Log.i("TAG", "difference " + diff);
} else {
Toast.makeText(SpinWheel.this, R.string.watch_to_play, Toast.LENGTH_SHORT).show();
}
}
});
我没有得到这个条件,它没有给我所需的结果。如何达到要求的结果?我到处搜索,但没有找到解决方案。
解决方案
您的问题之一是您已在条件内声明了点击次数:
if (diff>=3600000)
{
int click=1;
Toast.makeText(SpinWheel.this, "inside", Toast.LENGTH_SHORT).show();
// You need to do a loop here that increments click
if (click<=3)
'click' 将始终为 = 1,因为您刚刚声明并初始化了它,并且您没有在任何地方循环。当'click' <= 3时,您需要一些代码来循环。首先,您可能应该在onClick方法的顶部或什至在类级别声明您的int click变量以扩大其范围,然后从3开始管理设置在循环结束时回到 1。
推荐阅读
- vue.js - spa nuxt 项目中的 .nuxt 文件夹与 dist 文件夹
- math - 计算弧度以使玩家面对单位 - 从玩家(X,Y)到单位(X,Y)
- git - 如何返回上一次提交并将旧文件复制到新文件夹
- php - php:给定一个艺术家列表,并且必须确定哪个艺术家的名字最长
- jquery - 使用 jQuery 更改没有 ID 的 HTML Span
- javascript - 在 div 标签中使用 javascript 将 UL 添加到 HTML 时被捕获并出错
- python - 将Python中十六进制格式的字符串正确转换为二进制数据
- sequence - IBM BPM 8.5 按自定义顺序的多实例序列流
- ios - WKWebView 和没有 SSL 的网站
- xml - 卡在 XML 上 - 需要遍历数据