java - 销毁SurfaceView后如何返回主Activity?

标签 java android

我的 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/

相关文章:

java - 字符串无法识别为空格或空

java - 如何使用比较器对 ArrayList<String> 进行排序?

android - 保持 DialogFragment 打开,直到用户输入有效 Android?

android - 在安卓模拟器上使用希伯来语

java - 覆盖派生类中已经覆盖的方法

java - 使用 apache xml rpc 客户端 3.1.3 发送复杂类型

JavaFX TabPane 标题 OverrunStyle

java - ViewPager.instantiateItem() 位置

android - Firebase 数据更新滞后 - 多人游戏

java - 从 ACRA 4.5 升级到 ACRA 4.6 后出现编译错误