我希望将得分的值从一个活动传递到另一个活动。我将addExtras添加到新活动的intent和getExtras中,但它似乎没有获得该值。
活动1;
Intent intent = new Intent(Game.this, EndGame.class);
intent.putExtra("put_score", score);
startActivity(intent);
Game.this.finish();
活动2;
Bundle extras = getIntent().getExtras();
if (extras != null) {
score = extras.getString("put_score");
}
setContentView(R.layout.endgame);
scoreResult = (TextView) findViewById(R.id.scoreNum);
scoreResult.setText(score);
答案 0 :(得分:2)
您的问题来自Bundle.java中的以下代码:
try {
return (String) o;
} catch (ClassCastException e) {
typeWarning(key, o, "String", e);
return null;
}
此处o
是您放入捆绑包的对象(捆绑包实际上有一个Map<String, Object>
类型的核心存储空间,因此,由于自动装箱,当您将int
放入捆绑包时,它将成为Integer
)。但遗憾的是,Integer
无法明确地String
投放到null
,因此您会获得int
。换句话说:如果您放置getInt
,则使用{{1}}来检索值。
答案 1 :(得分:1)
您使用putExtra
而非putExtras
将数据置于意图中
所以以同样的方式阅读它们
使用 getXXExtra() XX是您的数据的数据类型,
根据示例,如果得分为整数,则使用:
getIntExtra("put_score", 0);//0 zero is default in case data was not found
http://developer.android.com/reference/android/content/Intent.html