首页 > 解决方案 > 如何在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();
                }
            }
        });

我没有得到这个条件,它没有给我所需的结果。如何达到要求的结果?我到处搜索,但没有找到解决方案。

标签: androidtimer

解决方案


您的问题之一是您已在条件内声明了点击次数:

                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。


推荐阅读