我的 Activity
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);
}
点击我的 View 。
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);”和 'new PlayActivity().redirectHome();
感谢任何帮助。
最佳答案
您不必直接调用“OnDestroy()”回调,也不必在 onDestroy()
方法中调用 finish()
。
在您的情况下,最好将代码更改为如下所示:
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();
}
还有一个问题:这东西真的有用吗?我问这个问题是因为 onPause()
回调中的 finish()
调用应该会在您的 Activity 出现在屏幕上之前关闭您的 Activity。
无论如何,请检查我的代码并评论结果)
编辑:您也无法实际创建 Activity 实例并调用其方法,例如 new PlayActivity().redirectHome();
因此您需要一个 context
Аactivity
来执行新 Activity 的开始或完成此 Activity 。
关于java - 销毁SurfaceView后如何返回主Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14785686/