相关疑难解决方法(0)

默认共享首选项在Service中给出了错误的值

我有一个PreferenceFragment,我在XML中定义了一个CheckBoxPreference.我需要在服务中检查这个值,但它总是给我旧值.我注意到当我重新启动应用程序时,该值已正确更改.

我的偏好片段:

public class OptionsFragment extends PreferenceFragment 
{

    public static final String WIFI_ONLY = "wifi";

    private SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MyApplication.getInstance());

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.config);
    }

 }
Run Code Online (Sandbox Code Playgroud)

我的config.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <CheckBoxPreference
        android:defaultValue="true"
        android:key="wifi"
        android:summary="Check if you want to use wifi only"
        android:title="Use Wifi only" />

</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

我的服务:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(MyApplication.getInstance());        
Log.d(TAG, "isWifiOnly : "+settings.getBoolean(OptionsFragment.WIFI_ONLY, true));
Run Code Online (Sandbox Code Playgroud)

无论是否更改,日志始终返回相同的值,除非我重新启动应用程序.另外,在我的MainActivity中,我在OnCreate()中有这一行:

PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.config, false);
Run Code Online (Sandbox Code Playgroud)

如果需要,它会使用默认值创建配置文件.

我做错了什么,问题是什么?

android sharedpreferences

4
推荐指数
1
解决办法
3907
查看次数

标签 统计

android ×1

sharedpreferences ×1