Android共享首选项不保存

我创build了一个Androiddynamic壁纸,我试图让用户从手机中select一张图片并将其应用为背景图片,但是当我启动开始select图片的活动时,我的共享偏好似乎没有妥善保存。

下面是我在用户按下首选项button时启动的activity的onCreate方法,以及在设备上获取图像path的onActivityResult(所有这些似乎都起作用)。 我提交首选项后的println不会打印任何内容。

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); photoPickerIntent.setType("image/*"); startActivityForResult(photoPickerIntent, SELECT_PICTURE); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (requestCode == SELECT_PICTURE) { Uri selectedImageUri = data.getData(); selectedImagePath = getPath(selectedImageUri); preferences = getApplicationContext().getSharedPreferences(PREFERENCES_NAME, 0); preferences.edit().putString(SETTINGS_BACKGROUND_IMAGE, "okok"); preferences.edit().commit(); System.out.println("Image" + preferences.getString(SETTINGS_BACKGROUND_IMAGE, "")); } } finish(); } 

3 Solutions collect form web for “Android共享首选项不保存”

从文档 :

为这些首选项创build一个新的编辑器,通过这个编辑器可以对首选项中的数据进行修改,并自动将这些更改提交回Shared Shared对象。

由于这是一个新的编辑器实例,你的代码应该更像这样:

 preferences = getApplicationContext().getSharedPreferences(PREFERENCES_NAME, 0); SharedPreferences.Editor editor = preferences.edit(); editor.putString(SETTINGS_BACKGROUND_IMAGE, "okok"); editor.commit(); 

尝试另一种初始化SharedPreferencesvariables的方法:

 SharedPreferences sf = PreferenceManager.getDefaultSharedPreferences(this); 

你也可以用sf.edit().putString(string, value).commit();写连接到sf.edit().putString(string, value).commit();

在我的情况下,我不得不添加editor.apply(); 在承诺之前为了工作。

这是我的代码:

 preferences = getApplicationContext().getSharedPreferences(PREFERENCES_NAME, 0); SharedPreferences.Editor editor = preferences.edit(); editor.putString(SETTINGS_BACKGROUND_IMAGE, "okok"); editor.apply();//I added this line and started to work... editor.commit(); 
  • Android开关部件textOn和textOff在棒棒糖中不起作用
  • 自定义对象的Android ArrayList - 保存到SharedPreferences - 可序列化?
  • 如何创build多个视图types的RecyclerView?
  • 在eclipse Indigo中安装ADT时没有发现存储库错误
  • 如何使用v7 / v14首选项支持库?
  • 如何在Android平台上反编译APK或DEX文件?
  • NestedScrollView中的ViewPager
  • 用于Java Android的人脸识别API
  • 使用Androidtesting框架进行Android AsyncTasktesting
  • 如何在android中创build一个popup窗口?
  • 如何重新启动Android活动