[英]Passing data between activities in Android?
我希望将分数的价值从一项活动传递到另一项活动。 我在新活动中向意图添加了addExtras并在新活动中获取了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);
您的问题来自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
检索值。
您使用putExtra
而不是putExtras
将数据放入了意图中,因此以相同的方式读取它们
使用getXXExtra()XX是您数据的dataType,
根据示例,如果score是Integer,则使用:
getIntExtra("put_score", 0);//0 zero is default in case data was not found
http://developer.android.com/reference/android/content/Intent.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.