.getIntExtra返回0

时间:2017-10-29 22:58:31

标签: android android-intent android-activity

我一直在写一个测验应用,我想把分数从一个活动传递给下一个活动(一个问题转到另一个活动,然后到最后一页,你可以看到你的分数)。但是我总是得到0,我猜是因为它是我设置的默认int值。

以下是代码:

Intent i = new Intent("com.example.leodr.testedeinwissen.Frage2");
i.putExtra("score", score);
startActivity(i);

在下一个活动中:

int score = getIntent().getIntExtra("score", 0);

我也尝试过SharedPreferences,但这也没有用。

SharedPreferences sp = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor spe = sp.edit();
spe.putInt("score", (int)score);
spe.commit();

在第二项活动中:

SharedPreferences sp = getPreferences(Context.MODE_PRIVATE);
score = sp.getInt("score", 0);

1 个答案:

答案 0 :(得分:0)

  

以下是代码:

Intent i = new Intent("com.example.leodr.testedeinwissen.Frage2");
i.putExtra("score", score);
startActivity(i);

这里的第一行不起作用,但接下来的两行很好。您的第一行是使用Intent(String)构造函数,此构造函数仅指定Intent操作。您很可能希望使用Intent(Context, Class)构造函数,代码如下:

Intent i = new Intent(MainActivity.this, Frage2.class);

至于你的第二个问题......

  

我也尝试过SharedPreferences,但这也没有用。

SharedPreferences sp = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor spe = sp.edit();
spe.putInt("score", (int)score);
spe.commit();
     

在第二项活动中:

SharedPreferences sp = getPreferences(Context.MODE_PRIVATE);
score = sp.getInt("score", 0);

您在此处使用Activity.getPreferences()调用,该调用会返回对每个活动 私有的SharedPreferences实例。换句话说,您的第二个活动中的getPreferences()将在您的第一个活动中返回不同的 SharedPreferences而不是getPreferences()来电。

如果您想使用SharedPreferences在多个活动之间共享值,则应改为使用getSharedPreferences(String, int)调用,并为String传递相同的值(name )参数两次。也许是这样的:

SharedPreferences sp = getSharedPreferences("ScoreStorage", Context.MODE_PRIVATE);
SharedPreferences.Editor spe = sp.edit();
spe.putInt("score", (int)score);
spe.commit();

在第二项活动中:

SharedPreferences sp = getSharedPreferences("ScoreStorage", Context.MODE_PRIVATE);
score = sp.getInt("score", 0);