【问题标题】:Setting intent putExtra value using a method使用方法设置意图 putExtra 值
【发布时间】:2014-06-02 18:57:06
【问题描述】:

我是 Android 编程新手,遇到一个小问题,可能很容易解决。我正在制作一个非常基本的游戏,当游戏完成后,我想将高分返回主菜单。我对意图的工作方式一般没问题,但我对这个有点困难;我想要从一个类中提取分数(hitCount)值,并在另一个类的 putExtra 中使用它。

所以,这段代码在 GameActivity 中:

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

这段代码在 GameView 中:

public int getHitCount(){
return hitCount;
}

我确定第二个代码可能是一个非常简单的问题,但我在 Eclipse 中没有收到任何错误;当我返回游戏的主菜单时,它只会使我的 AVD 中的应用程序崩溃。

如果有帮助,这是我在主菜单上使用的代码;

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

}

这是我在 logcat 中遇到的错误:

04-18 04:51:33.145: E/AndroidRuntime(1190): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {cct.mad.lab/cct.mad.lab.MainMenu}: java.lang.NullPointerException

任何建议将不胜感激。

【问题讨论】:

  • 我认为你不应该在 GameActivity 中调用 super.finish()。
  • @serious198706:这似乎只是让我的 AVD 上的后退按钮什么都不做。

标签: java android eclipse android-intent methods


【解决方案1】:

可能问题出在代码的第一个sn-p中的gameView.getHitCount(),尝试检查它是否真的是一个数字或者它是空的

【讨论】:

    【解决方案2】:

    Onactivityresult 在知道调用了哪个意图时起作用,因此相同的意图将发送结果。在这里,您正在主要活动中创建意图,但它不期望任何意图结果,因为它没有调用任何意图,这就是它的原因抛出运行时异常。我建议您为此使用共享偏好,因为它易于实现并且适合您的游戏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 2017-09-21
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多