繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM