无法在Android服务中保存或读取共享首选项

时间:2014-04-09 08:56:35

标签: android sharedpreferences android-service

无法在我的服务中保存或阅读共享偏好设置。你能建议任何解决方法吗?

写:

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());


    Set<String> set = new HashSet<String>();        
    for (PagerTagGattClient deviceGatt : this){
        set.add(getBluetoothDevice().getAddress());         
    }

    Editor editor = prefs.edit();
    editor.putStringSet(PREF_DEVICES, set);
    return editor.commit();

在onCreate上阅读服务:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Set<String> set = new HashSet<String>();
prefs.getStringSet(PREF_DEVICES, set);

if (set.isEmpty()) Log.e(TAG, "Prefs is empty!"); 

阅读集总是空的。

2 个答案:

答案 0 :(得分:2)

您需要将您读取的值实际分配给变量set

更改

prefs.getStringSet(PREF_DEVICES, set);

set = prefs.getStringSet(PREF_DEVICES, set);

第二个参数是默认值,在您的情况下为空HashSet(您可以这样离开或更改为适当的默认值)。

答案 1 :(得分:2)

试试这个......

SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
 editor.putStringSet(PREF_DEVICES, set);
editor.commit();

在阅读时使用

set = prefs.getStringSet(PREF_DEVICES, set);