使用两个不同的活动编辑sharedPreferences以影响第三个活动中的更改

时间:2016-01-27 15:14:51

标签: android sharedpreferences android-sharedpreferences

我知道所有关于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();

当这样做时,它应该更新活动B中的添加为29而不是12。但这就是我的问题所在,它不会编辑sharedPreferences。还有另一种方法吗?为什么不更新活动B中的添加?

2 个答案:

答案 0 :(得分:1)

您可能正在 datePicker.minimumDate = NSDate() let calendar:NSCalendar = NSCalendar.currentCalendar() let components = calendar.components([NSCalendarUnit.Hour, NSCalendarUnit.Minute], fromDate: NSDate()) components.hour = 19 components.minute = 00 datePicker.setDate(calendar.dateFromComponents(components)!, animated: true)

中加载这些值

该方法仅在活动生命周期中被调用一个。当您旋转手机时,活动会被销毁并重建,再次呼叫onCreate()

一种可能的解决方案是加载onCreate()中的值,这样一旦您从其他活动回来,您就会拥有它们。

答案 1 :(得分:0)

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