3

我知道所有关于 sharedPreferences 的知识,但我对此感到困惑。我知道把东西放到 sharedPreferences 中,你这样做:

假设这是活动 A:

SharedPreferences preferences=getSharedPreferences("numbers",MODE_PRIVATE);
SharedPreferences.Editor edit=preferences.edit();
String a=ed.getText().toString();
String b=ed1.getText().toString();
editor.putString("num1",a);
editor.putString("num2",b);
editor.apply();

并在活动 B 中把它拿出来,

SharedPreferences preferences=getSharedPreferences("numbers",MODE_PRIVATE);
String numberOne=preferences.getString("num1","");
String numberTwo=preferences.getString("num2","");

然后我们可以将活动 B 中的 textView 设置为:

TextView both;
both.setText(numberOne + " " + numberTwo);

但是如果我想编辑 Activity C 中的 sharedPreferences 中的内容怎么办?我在网上寻找如何做到这一点,这篇文章在这里

http://codetheory.in/android-application-data-storage-sharedpreferences/

它说你只需要再次调用它,但使用不同的字符串值,就像这样

活动 C:

SharedPreferences preferences=getSharedPreferences("numbers",MODE_PRIVATE);
SharedPreferences.Editor edit=preferences.edit();
String c=ed3.getText().toString();
String d=ed4.getText().toString();
editor.putString("num1",c);
editor.putString("num2",d);
editor.apply();

完成此操作后,它应该将 Activity B 中的 add 更新为 29 而不再是 12。但这就是我的问题所在,它不会编辑 sharedPreferences。还有另一种方法可以做到这一点吗?为什么它不会更新活动 B 中的添加?

4

2 回答 2

1

您可能正在将这些值加载到onCreate()

该方法仅在 Activity 生命周期内被调用一个。当您旋转手机时,Activity 被破坏并重建,onCreate()再次调用。

一种可能的解决方案是加载这些值,onResume()以便您在从其他活动返回时立即拥有它们。

于 2016-01-27T16:03:28.983 回答
0

也许值已正确保存在 Shared Pref 中,但文本字段中的值未更新。你也许可以检查一下。

于 2016-01-27T15:45:48.543 回答