【问题标题】:How can I repeat this countdown timer in a specific way...?如何以特定方式重复此倒数计时器...?
【发布时间】:2016-10-15 10:13:07
【问题描述】:

在游戏中输出一个随机数 (loadG1) 并显示 4 秒。一旦四秒结束,它就会消失,用户必须输入它的值才能获得一分。一旦用户按下回车,他们的输入框就会消失,程序必须等到更长的 CountDownTimer(当前为 18 秒)结束才能看到他们的分数。到目前为止,他们只能得一分。我想要发生的是,一旦他们输入答案(无论是否正确),4 秒倒计时的内容就会重复。虽然,我希望在倒数计时器再次启动时也输出 loadG1。所以他们输入一个答案,一个新的随机 loadG1 显示另外 4 秒然后消失,他们输入另一个答案,等等......直到更长的计时器结束。我该怎么做呢?我知道循环不起作用,因为我尝试过,它只是让我的应用程序崩溃。如果有人可以帮助我做到这一点,并向我展示如何实现代码,我将不胜感激。 注意:我是学习 Java 和 Android 开发的新手。 非常感谢。

代码如下:

public class game1 extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game1);


final Button loseStarter1;

    loseStarter1 = (Button) findViewById(R.id.Starter1);
    loseStarter1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            loseStarter1.setVisibility(View.GONE);

            final int[] score = {0};
            Random generateG1 = new Random();
            final int loadG1 = generateG1.nextInt(1000000)+10000;
            final TextView number = (TextView) findViewById(R.id.number);
            number.setText(" "+loadG1);

            new CountDownTimer(18000, 1000) {
                @Override
                public void onTick (long millisUntilFinished) {
                }
                public void onFinish() {
                    TextView result = (TextView) findViewById(R.id.outcome);
                    result.setText("Score: "+ score[0]);
                    TextView prompt = (TextView) findViewById(R.id.prompt);
                    prompt.setVisibility(View.GONE);
                }
            }.start();


                    new CountDownTimer(4000, 1000) {

                        @Override
                        public void onTick(long millisUntilFinished) {

                        }

                        @Override
                        public void onFinish() {
                            number.setVisibility(View.GONE);
                            final TextView prompt = (TextView) findViewById(R.id.prompt);
                            prompt.setText(" Enter the number");
                            final EditText input = (EditText) findViewById(R.id.enterAnswer);
                            input.setVisibility(View.VISIBLE);
                            input.setOnKeyListener(new View.OnKeyListener() {
                                @Override
                                public boolean onKey(View v, int keyCode, KeyEvent event) {
                                    if (event.getAction() == KeyEvent.ACTION_DOWN) {
                                        switch (keyCode) {
                                            case KeyEvent.KEYCODE_ENTER:
                                                Editable answer = input.getText();
                                                int finalAnswer = Integer.parseInt(String.valueOf(answer));
                                                int finalLoadG1 = Integer.parseInt(String.valueOf(loadG1));
                                                input.setVisibility(View.GONE);
                                                prompt.setVisibility(View.GONE);
                                                if (finalAnswer == finalLoadG1) {
                                                    score[0]++;
                                                }

                                                return true;
                                            default:
                                        }
                                    }
                                    return false;
                                }
                            });
                        }
                    }.start();

            };
        });
    }

}

【问题讨论】:

  • 您应该尝试重新表述这个问题。很难理解您想要实现的目标。
  • @UdiIdan 你不明白什么?我读它的方式,这似乎是有道理的。我很乐意编辑您需要的任何附加信息。
  • 如果您需要答案,您应该努力表述问题,以便于理解。它应该对读者有意义,而不是对你。祝你好运。
  • @UdiIdan 如果您真的阅读并浏览了代码,那将是非常有意义的。
  • 但最终只有你回答了这个问题。令人惊讶,我不得不说。如您所说,如果您想学习,那不是要走的路。让我们停止这个讨论,因为它显然没有成效。

标签: java android android-studio countdowntimer


【解决方案1】:

已解决

我在 score[0]++ 后面加上以下内容:

number.setVisibility(View.VISIBLE);
final int loadG1 = generateG1.nextInt(1000000) + 10000;
number.setText(" " + loadG1);
input.getText().clear();

start();

这样,所有必要的更改都已完成,计时器重新开始。我还修改了 prompt TextView 的可见性,以确保它仅在用户能够输入答案时出现。花了我一段时间,但这个问题已经解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多