【问题标题】:Restarting my application重新启动我的应用程序
【发布时间】:2012-10-24 05:54:53
【问题描述】:

我正在构建一个带有 3 个“生命”和一个计时器的小游戏。 当生命结束或计时器为零时,我告诉它去“游戏结束”活动。在游戏结束时,我有一个“重试”按钮,它会将您发送到欢迎活动,您可以重新开始。问题是我认为上一场比赛的计时器仍在运行,因为它会在下一场比赛中进入游戏结束活动,即使计时器和生命都正常。

当有人按下“重试”时,我可以通过什么方式将应用程序重置为启动模式?

谢谢:)

编辑:我的代码:这是时间结束并进入游戏结束活动的时间,

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    ImageView iv =(ImageView) findViewById(R.id.imageView1);
    final TextView mTextField = (TextView) findViewById(R.id.textView2);
    CountDownTimer one = new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         mTextField.setText("time: " + millisUntilFinished / 1000);
     }

     public void onFinish() {

         toGameOver(null);

     }
  }.start();

}




public void toGameOver (View view)
{
    Intent intent = new Intent(this,GameOverActivity.class);
    intent.putExtra(EXTRA_MESSAGE, points.toString());
    startActivity(intent);

}

这是生命结束并进入游戏结束活动的时间:

public void changepic(View view)
{
    boolean isCorrect=false;
    int n = 8;
    ImageView iv =(ImageView) findViewById(R.id.imageView1);
    TextView tv = (TextView) findViewById(R.id.textView1);  
    if(rndInt<3&&rndInt>0){
        isCorrect=true;
        points++;
    }

    if(!isCorrect&&lives==0)
        toGameOver(null);
    if (!isCorrect&&lives==1&&rndInt!=0)
    {
        lives--;
        ImageView iv1 = (ImageView) findViewById(R.id.imageView3);
        iv1.setVisibility(View.INVISIBLE);
    }
    if (!isCorrect&&lives==2&&rndInt!=0)
    {
        lives--;
        ImageView iv1 = (ImageView) findViewById(R.id.imageView4);
        iv1.setVisibility(View.INVISIBLE);
    }
    if (!isCorrect&&lives==3&&rndInt!=0)
    {
        lives--;
        ImageView iv1 = (ImageView) findViewById(R.id.imageView2);
        iv1.setVisibility(View.INVISIBLE);
    }

当我希望它开始时,这是在游戏结束活动:

public void goToStart (View view)
{
    Intent intent = new Intent(this,WelcomeActivity.class);
    startActivity(intent);

}

很抱歉在询问时没有发布它

【问题讨论】:

  • 我们不是读心术的人。发布您的代码。
  • 干得好,问题出在哪里?!
  • 如果你想在“游戏结束”时关闭计时器,通常有一个cancel() 方法或其他方法,具体取决于你使用的计时器代码。如果你想在离开时重置你的活动,你可以使用finish()方法,当使用意图去另一个活动时更好的是添加一个意图标志来清除活动堆栈intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);。 ofc,很难知道这里发生了什么。我猜。

标签: android android-intent


【解决方案1】:

如果你想在游戏结束时停止计时器,那么在函数 toGameOver() 内部你需要调用 one.cancel() ,这将导致计时器被取消。那么当游戏重新开始时,你应该调用 one.start()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    相关资源
    最近更新 更多