在Android中的活动之间传递数据?

时间:2014-05-08 14:05:23

标签: android android-intent android-activity

我希望将得分的值从一个活动传递到另一个活动。我将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);

2 个答案:

答案 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