当前位置: 首页 > 面试题库 >

如何以特定方式重复此倒数计时器...?

毛德华
2023-03-14
问题内容

在游戏中,输出一个随机数(loadG1)并显示4秒钟。一旦四秒钟结束,它就会消失,用户必须输入其值才能获得分数。一旦用户按下Enter键,他们的输入框就会消失,程序必须等待直到更长的CountDownTimer(当前为18秒)结束才可以看到他们的分数。到目前为止,他们只能得分1分。我想发生的是,一旦输入答案(无论是否正确),就重复4秒倒数计时器的内容。虽然,我希望在再次启动倒数计时器时也输出loadG1。因此,他们输入答案,新的随机负载G1会显示另外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();

            };
        });
    }

}

问题答案:

解决

我在分数[0] ++之后加上了以下内容:

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

start();

这样,将进行所有必要的更改,并且计时器将重新开始。我还修改了 提示 TextView
的可见性,以确保仅在用户能够输入答案时才显示。花了我一段时间,但这已经解决。



 类似资料:
  • 我试图使一个倒计时,显示总天数,小时,分钟和秒的剩余特定日期。 这就是我到目前为止所创造的。 我用过计时器,它用Console.WriteLine计数,但TextViews什么也不显示,也不更新...有人知道如何每秒钟更新TextViews吗?

  • 我正在尝试实现一个倒计时计时器,它将使用一个特定的日期和时间开始。从那里,我需要它从1小时倒计时,然后更新最初的日期和时间,增加一个小时,然后无限期地重复自己。 这是用于一个产品拍卖,将得到一个新的产品,一旦一个售完,价格下降每小时从它添加到拍卖,可能是一天中的任何时间。 示例: 我需要这个计时器在2014,7,25,11,30,0,0开始(2014年8月25日美国东部时间上午11:30),它将倒

  • 我写了这段代码,我在《Python for dummies》一书中找到了这段代码 它应该打印10 9 8 7 6 5 4 3 2 1Blastoff! 当我运行程序时,我得到一个错误“调用打印时缺少括号” 在youtube上,我发现了一个类似的代码,从0到10000000。这个很好用。 为什么它们看起来如此不同?我需要什么样的基础知识才能理解这一点?这是不同python版本的问题吗?《Python

  • 问题内容: 我想知道是否有人可以帮助我。经过数小时的不懈搜索,在这里和网上我似乎找不到使用jquery的简单倒计时。我不想使用任何类型的插件,而只是简单的jquery代码来从日期倒数。我设法在下面找到此代码。但是即使将此代码放置在我的网站中,也不会显示任何内容。我从jquery.com添加了jquery文件,并添加了ID不包含任何内容的正确div 。如果有人可以解释或告诉我如何在采用日期格式并返回

  • 问题内容: 我已经开发了一个倒数计时器,但不确定单击计时器的文本视图时如何暂停和恢复计时器。单击开始,然后再次单击以暂停并继续,再次单击计时器的文本视图。 这是我的代码: 问题答案: 资料来源:本要点。

  • 我正在学习Java中的同步。我无法理解倒计时锁的确切机制。 CountDownLatch是否根据声明中给出的线程数“倒数锁存器”(等待线程数完成)? 这是我试图理解的代码: 在上面的例子中: ExecutorService(从线程池)生成7个线程。我的理解是闩锁应该等待6个线程(从0到5)的完成,定义如下: 但我得到的输出并不是每次都是恒定的。有时会等待6个线程完成,有时会等待7个线程完成,例如: