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

在游戏中输出随机数(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(); }; }); } } 

解决

我在得分[0] ++之后加下以下内容:

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

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