【问题标题】:Intents crashing in simple android game意图在简单的安卓游戏中崩溃
【发布时间】:2015-06-24 19:19:10
【问题描述】:

我正在为 android 制作一个简单的游戏,但是由于我是初学者,有时我会遇到一些基本问题和代码中的错误。我不知道该代码有什么问题,但是当我按下后退按钮并且没有将分数从游戏重定向到主菜单时,它似乎崩溃了。

public void finish(){
    Intent returnIntent = new Intent();
    returnIntent.putExtra("GAME_SCORE",gameView.getHitCount());
    setResult(RESULT_OK, returnIntent);
    super.finish();
  }

游戏视图:

public int getHitCount(){
    return hitCount;
    }

和主菜单:

protected void onActivityResult(int requestCode, int resultCode, Intent retIntent) {
    // Check which request we're responding to
    if (requestCode == SCORE_REQUEST_CODE) {
        // Make sure the request was successful
        if (resultCode == RESULT_OK) {
            if (retIntent.hasExtra("GAME_SCORE")) {
                int scoreFromGame = retIntent.getExtras().getInt("GAME_SCORE");
                tvScore.setText(""+Integer.toString(scoreFromGame));
            }
        }   
    }
}

【问题讨论】:

  • 你能发布堆栈跟踪吗?
  • 我该怎么做?很抱歉,但正如我所说,我仍处于学习的早期阶段:)
  • 将您的 logCat 发布为图像 -> 截取完整 logCat 的屏幕截图并编辑您的问题
  • 你的游戏活动是否让你回到主菜单?
  • 我现在已将 LogCat 屏幕截图添加到说明中

标签: java android android-intent methods extras


【解决方案1】:

据我了解,GameActivity 将用户返回到mainMenuActivity 所以首先super 关键字在java 中总是最先出现,你不能只在super() 之前放任何东西,如果游戏活动将您返回到主菜单,onFinish() 方法必须是:

super.finish();
Intent returnIntent = new Intent(GameActivity.this,MainMenu.class);
returnIntent.putExtra("GAME_SCORE",gameView.getHitCount());
setResult(RESULT_OK, returnIntent);

如果是整数,则获得游戏分数,然后使用:

Intent intent = getIntent();
int intValue = intent.getIntExtra("GAME_SCORE", 0);

在您的 MainMenu 班级中 希望这会对你有所帮助。

【讨论】:

  • 艾哈迈德是对的。在问题的代码中,您说的是创建一个新的 Intent 但不发送任何内容。您需要像 Ahmad 在这里所说的那样向它发送发送活动和接收活动。
  • 一旦按下后退按钮,它有助于活动返回主菜单,现在它不会崩溃,但是当涉及到游戏分数时,我应该把上面的代码放在哪里?跨度>
  • 好的,首先在主菜单中将 gameScore 定义为类中的实例变量,在 onCreate 之前,然后在 onCreate() 中使用 getIntent() 并使用上面的代码初始化 gameScore,然后在你想要的地方使用变量跨度>
  • 从你的 onFinish() 中删除 setResult() 并添加 startActivity(intent);然后像我之前在你的 onCreate 中使用 get intent 并删除方法 onActivityResult() 或其他 SOL:使用 onActivityResult 但你必须在你的 onFinish() 中使用 startActivityForResult
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多