As preferências compartilhadas padrão fornecem valores incorretos no serviço
Eu tenho um PreferenceFragment onde defini um CheckBoxPreference em XML. Preciso verificar esse valor em um Serviço, mas ele sempre me fornece o valor antigo. Percebi que o valor foi alterado corretamente quando reinicio o aplicativo.
Meu fragmento de preferência:
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);
}
}
Meu 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>
Meu serviço:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(MyApplication.getInstance());
Log.d(TAG, "isWifiOnly : "+settings.getBoolean(OptionsFragment.WIFI_ONLY, true));
O log sempre retorna o mesmo valor, independentemente de eu o alterar ou não, exceto se eu reiniciar o aplicativo. Além disso, na minha MainActivity, tenho essa linha no OnCreate ():
PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.config, false);
Ele cria o arquivo de configuração com o valor padrão, se necessário.
Estou fazendo algo errado, a questão é o que?