0

我的活动

protected void onDestroy(){
    super.onDestroy();
    finish();
}
public void onPause(){
    super.onPause();
    gv.gameLoopThread.setRunning(false);
    finish();
}
public void redirectHome(){

    onDestroy();
    Intent intent=new Intent(PlayActivity.this, MainActivity.class);
    startActivity(intent);
}

我的视图点击。

if(gameover){
              //My Restart Button.
          if(x>(getWidth()*.39375) && x<(getWidth()*.625) &&
                  y>(getHeight()*.583333333) && y<(getHeight()*.654166667)){                  
              gameover=false;
              createSprites();
              destroyed=0;
          }
              //My Exit Button.
          if(x>(getWidth()*.39375) && x<(getWidth()*.625) &&
                  y>(getHeight()*.729166667) && y<(getHeight()*.791666667)){
              gameLoopThread.setRunning(false);
              new PlayActivity().redirectHome();
          }

      }

我的重新启动按钮有效,但我的退出按钮导致我的应用程序崩溃,并将错误指向 'Intent intent=new Intent(PlayActivity.this, MainActivity.class);' 和'新的 PlayActivity().redirectHome();

任何帮助表示赞赏。

4

2 回答 2

1

不能直接调用“OnDestroy()”回调,也不能调用finish()方法onDestroy()

在您的情况下,最好将您的代码更改为如下所示:

protected void onDestroy(){
  super.onDestroy();
}
public void onPause(){
  super.onPause();
  gv.gameLoopThread.setRunning(false);

}
public void redirectHome(){
 Intent intent=new Intent(PlayActivity.this, MainActivity.class);
 startActivity(intent);
 finish();
}

还有一个问题:这件事真的以某种方式起作用吗?我问这个是因为回调调用应该finish()onPause()你的活动出现在屏幕上之前关闭你的活动。

无论如何,请检查我的代码并评论结果)

编辑:你也不能真正创建活动实例并调用它的方法,new PlayActivity().redirectHome();所以你需要一个contextАctivity执行新活动的开始或完成这个活动。

于 2013-02-09T08:33:42.913 回答
0

似乎因为您可以onDestroy将活动引用PlayActivity.this变为无效或为空

您可以使用应用程序上下文而不是PlayActivity.thisto 并开始您的活动FLAG_ACTIVITY_NEW_TASK

于 2013-02-09T08:31:11.277 回答