java - 避免 Android 中的物理后退按钮

标签 java android

我想避免 Android 用户玩我的游戏并游戏结束,他们只需单击后退按钮即可返回游戏。

这是我从 GameActivity 跳转到新的 GameOver Activity 的代码。我可以使用什么命令?我只是想回到主要 Activity 而不是游戏 Activity 。

private void checkFails(){
    TextView failsleft = (TextView) findViewById(R.id.fails);
    if(fails < 1){
        failsleft.setText("Fails left: "+fails);
        Intent intent = new Intent(this, GameOverActivity.class);
        startActivity(intent);

    }else{
        failsleft.setText("Fails left: "+fails);
        fails--;
    }
}

最佳答案

如果你的 GameActivity 是由 MainActivity 启动的,你可以使用 extra 来告诉主 Activity 游戏已经结束。因此,您需要使用 startActivityWithResult 启动 GameActivity。

MainActivity中,使用startActivityForResult()启动GameActivity:

public class MainActivity extends AppCompatActivity {

    ...

    // Request code for handling the GameActivity result
    // make it final so it can be changed.
    private static final int gameOverRequestCode = 777;

    // Start GameActivity
    private void startTheGame() {
      Intent intent = new Intent(this, GameActivity.class);
      // start the GameActivity and wait for the result.
      startActivityForResult(intent, gameOverRequestCode);
    }


    @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      switch (requestCode) {

        // Handle the result from GameActivity.
        // when the result is accepted from GameActivity, start the GameOverActivity.
        case gameOverRequestCode:
          if (resultCode == Activity.RESULT_OK) {
            Intent intent = new Intent(this, GameOverActivity.class);
            startActivity(intent);
          }
          break;
      }
    }

    ...
}

GameActivity中,游戏结束时发送结果:

private void checkFails(){
    TextView failsleft = (TextView) findViewById(R.id.fails);
    if(fails < 1){
        failsleft.setText("Fails left: "+fails);

        // Send the result back to main activity
        Intent i = getIntent();
        // you can add any extra here, for example, game state.
        // i.putExtra("extra_key", value);
        setResult(Activity.RESULT_OK, i);

        // Finish the GameActivity because we don't need it anymore.
        finish();

    }else{
        failsleft.setText("Fails left: "+fails);
        fails--;
    }
}

关于java - 避免 Android 中的物理后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48412379/

相关文章:

java - 在 java string.replace 中使用正则表达式

java - "The following artifacts could not be resolved": Maven/Android/Eclipse

android - 如何只绘制可能较大和/或缩放的 SVG 的一部分?

Android - 避免对话框在设备旋转后关闭的最佳方法

java - 在 Android 中使用 SSL

java - 正则表达式在给定位置添加空格

java - maven 站点插件 3.3 java.lang.ClassNotFoundException : org. apache.maven.doxia.siterenderer.DocumentContent

java - 有ehcache jsp标签吗?

android - 如何使用导航组件 safeargs 将列表作为参数传递给 fragment

android - 以编程方式获取从图库中选择的图像的大小(以 kb 或 mb 为单位)