试图在活动之间传递数据

时间:2014-07-05 18:06:25

标签: android

我尝试使用此主题在两个活动之间传递数据:

How do I pass data between Activities in Android application?

这个答案:

在您当前的活动中,创建一个新的意图:

 Intent i = new Intent(getApplicationContext(), NewActivity.class);

 i.putExtra("new_variable_name","value");

 startActivity(i);

然后在新的Activity中,检索这些值:

    Bundle extras = getIntent().getExtras();

 if (extras != null) {

 String value = extras.getString("new_variable_name");

}

我的问题是,我没有成功..我有一个游戏包含一个名为币的值,但它是一个共享的参考, 这是sharedpreferences的代码:(oncreate)

prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    coins = prefs.getInt("key2", 0);

现在如何获得我在Shop(Shop.java)上购买的金币以便与他们一起买东西?

2 个答案:

答案 0 :(得分:2)

在您的发送Activity中使用以下内容传递您的硬币值:

i.putExtra("new_variable_name",coins);

请注意,第二个参数是来自SharedPreferences的int硬币值。

要在接收Activity上阅读您的硬币值(整数​​值),您必须将其读作Integer,而不是String

所以,请使用:

private int coinsValue = 0;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bundle extras = getIntent().getExtras();

 if (extras != null) {

     coinsValue = getIntent().getIntExtra("new_variable_name", 0);

}

}

你走了,coinsValue变量有你的价值。

编辑:要在接收类的任何位置使用coinsValue,请在开头将其声明为字段。

答案 1 :(得分:0)

如我所见,您可以在SharedPreferences中获得硬币数量。如果您这样做,则需要将其保存到您的活动中 -

SharedPreferences.Editor prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE).edit();
prefs.putInt("key2", coins);
prefs.commit();