使用两个不同的活动编辑 sharedPreferences 以影响第三个 activity 中的更改
Edit sharedPreferences with two different activities to affect change in third activity
我对 sharedPreferences 了如指掌,但我对此感到困惑。我知道把东西放入 sharedPreferences,你这样做:
假设这是 activity 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();
并在 Activity B 中将其取出,
SharedPreferences preferences=getSharedPreferences("numbers",MODE_PRIVATE);
String numberOne=preferences.getString("num1","");
String numberTwo=preferences.getString("num2","");
然后我们可以在 activity B 中设置一个 textView 为:
TextView both;
both.setText(numberOne + " " + numberTwo);
但是如果我想在 Activity C 中编辑 sharedPreferences 中的内容怎么办?
我在网上查看如何执行此操作以及此处的这篇文章
http://codetheory.in/android-application-data-storage-sharedpreferences/
它说你只需要再次调用它,但使用不同的字符串值,就像这样
Activity 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 中的添加更新为 29 而不是 12。但这就是我的问题所在,它不会编辑 sharedPreferences。还有另一种方法吗?为什么它不更新 activity B 中的添加?
可能值已正确保存在共享首选项中,但文本字段中的值未更新。你也许可以检查这个。
您可能正在 onCreate()
中加载这些值
该方法在 Activity 生命周期内仅被调用一次。当你旋转 phone 时,Activity 被破坏并重建,再次调用 onCreate()
。
一个可能的解决方案是加载 onResume()
中的值,这样一来您从另一个 activity.
回来后就可以拥有它们
我对 sharedPreferences 了如指掌,但我对此感到困惑。我知道把东西放入 sharedPreferences,你这样做:
假设这是 activity 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();
并在 Activity B 中将其取出,
SharedPreferences preferences=getSharedPreferences("numbers",MODE_PRIVATE);
String numberOne=preferences.getString("num1","");
String numberTwo=preferences.getString("num2","");
然后我们可以在 activity B 中设置一个 textView 为:
TextView both;
both.setText(numberOne + " " + numberTwo);
但是如果我想在 Activity C 中编辑 sharedPreferences 中的内容怎么办? 我在网上查看如何执行此操作以及此处的这篇文章
http://codetheory.in/android-application-data-storage-sharedpreferences/
它说你只需要再次调用它,但使用不同的字符串值,就像这样
Activity 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 中的添加更新为 29 而不是 12。但这就是我的问题所在,它不会编辑 sharedPreferences。还有另一种方法吗?为什么它不更新 activity B 中的添加?
可能值已正确保存在共享首选项中,但文本字段中的值未更新。你也许可以检查这个。
您可能正在 onCreate()
该方法在 Activity 生命周期内仅被调用一次。当你旋转 phone 时,Activity 被破坏并重建,再次调用 onCreate()
。
一个可能的解决方案是加载 onResume()
中的值,这样一来您从另一个 activity.