我一直在写一个测验应用,我想把分数从一个活动传递给下一个活动(一个问题转到另一个活动,然后到最后一页,你可以看到你的分数)。但是我总是得到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);
答案 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);