问题:活动B总是返回false,但是,如果我在活动A中检查相同的KEY,则结果为true。为什么是这样?我检查了KEY,两个活动完全一样。
编辑:谢谢大家的帮助,但在实施建议后,我仍然没有运气。这就是我现在所拥有的:
ActivityA, extends Activity Implements OnGesturePerformedListener
//How methods are called...
read(getApplicationContext(),"fav", posName);
write(getApplicationContext(), "fav", posName, false);
...
public Boolean read(Context context, String name, String key) {
SharedPreferences sP = context.getSharedPreferences(name, MODE_PRIVATE);
Boolean b = sP.getBoolean(key, false);
return b;
}
public void write(Context context, String name, String key, boolean value) {
SharedPreferences sP = context.getSharedPreferences(name, MODE_PRIVATE);
SharedPreferences.Editor editor = sP.edit();
editor.putBoolean(key, value);
editor.commit();
}
ActivityB, extends FragmentActivity
,子类:
public static class SectionFragment extends Fragment
内部onActivityCreated()
SharedPreferences sP = getActivity().getSharedPreferences("fav", MODE_PRIVATE);
Boolean b = sP.getBoolean(posName, false);
结果= b
始终等于false
任何想法?
答案 0 :(得分:2)
public void write(Context context, String key, boolean value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(
NAME_SHAREDPREFERENCES, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(key, value);
editor.commit();
}
public Boolean read(Context context, String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(
NAME_SHAREDPREFERENCES, MODE_PRIVATE);
Boolean b = sharedPreferences.getBoolean(key, false);
return b;
}
答案 1 :(得分:2)
来自Android文档:
使用方法getPreferences(int)管理活动持久状态,允许您检索和修改与活动关联的一组名称/值对。 要使用在多个应用程序组件(活动,接收器,服务,提供程序)之间共享的首选项,您可以使用基础Context.getSharedPreferences()方法来检索以特定名称存储的首选项对象。 (http://developer.android.com/reference/android/app/Activity.html)
所以基本上你需要使用Context.getSharedPreferences()来分享多个活动的偏好。
答案 2 :(得分:0)
您可以采用以下方法在任何地方获取相同的sharedPreference:
SharedPreference mPrefs = PreferenceManager.getDefaultSharedPreference(getApplicationContext());
SharedPreference.Editor mEditor = mPrefs.edit();
我希望它很有用。