Android 当在活动之间传递数据时,我总是得到相同的值

Android 当在活动之间传递数据时,我总是得到相同的值,android,android-intent,Android,Android Intent,在我的游戏中,我尝试使用一个额外的意图将分数从PlayGame活动传递到记分板活动。 游戏结束后,我会以以下方式进入记分板: Intent intentScoreboard = new Intent(getApplicationContext(), Scoreboard.class); intentScoreboard.putExtra("com.example.game.SCORE", score_counter); startActivity(intentScoreboard); 然后在S

在我的游戏中,我尝试使用一个额外的意图将分数从PlayGame活动传递到记分板活动。 游戏结束后,我会以以下方式进入记分板:

Intent intentScoreboard = new Intent(getApplicationContext(), Scoreboard.class);
intentScoreboard.putExtra("com.example.game.SCORE", score_counter);
startActivity(intentScoreboard);
然后在Scoreboard类中,我在onResume()方法中检索它,如下所示:

Bundle b = getIntent().getExtras();
int score = b.getInt("com.example.game.SCORE");
第一次这样做很好,但是如果我再打另一场比赛,在结束后回到记分板,我仍然会得到第一场比赛的分数


我遗漏了什么?

您遗漏了调用setIntent()

尝试以下操作: 如果您重新开始新游戏,让您的得分活动完成()


然后它应该工作了

getIntent传递启动活动的意图。如果活动恢复,则您不会得到最近收到的意图。请参见此处了解解决方案:

Bundle
不太需要来接收
getExtra()
值。 在我的代码中,我曾经收到过这样的消息

int score=getIntent().getIntExtra(“com.example.game.score”,defaultValue)

它应该能解决你的问题。而且它也不会给你已经收到的值


希望这听起来对你有好处。

我想你应该使用这个功能。我尝试过使用共享首选项,但奇怪的是,我也有同样的问题,如果你调用一个已经存在的活动,那么它就会位于顶部,或者根据附加的标志清除活动堆栈。现在它可以正常工作,但是对getIntent的调用将始终返回原始意图。您应该做的是在onNewInetent调用setIntent(newIntent)中,然后您的代码就可以正常工作了。。这只是我对你问题的猜测。谢谢,就这样。我还必须添加intentScoreboard.setFlags(Intent.FLAG\u ACTIVITY\u SINGLE\u TOP)而不是再次发布相同的答案,我更喜欢对已经发布的答案进行评论。这个社区是这样工作的。当然,但当人们异步工作时,这种情况会发生,没有锁定。这确实是问题所在,请参阅上面Javanator的回答。不,我尝试过,但为了使其工作,我仍然需要调用setIntent()。不过,我喜欢较短的代码:)@muggezifter实际上它可以将puExtra作为字符串和getExtra作为字符串使用。使用字符串值尝试一次。也许你也知道整数的解。试试看,别想了,伙计。如果您希望分数仅显示平均值(如果您不打算返回此getExtra value和add或mult,任何整数操作),则可以将其作为字符串值传递给您。