正在更新默认首选项



我有一个问题,在运行我的主应用程序之前,我必须设置一整套设置。这些都是通过登录过程完成的,但这并没有反映在我在主应用程序中的主设置中。

登机期间,我设置:

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int radioId = checkedId;
radioButton = getActivity().findViewById(radioId);
String str = (String) radioButton.getText();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext());
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(kDirection, str).apply();
editor.commit();
}
});

我的偏好:

<PreferenceCategory app:title="Directions">
<ListPreference
app:key="kDirectionSetting"
app:entryValues="@array/directions"
android:entries="@array/directions"
app:useSimpleSummaryProvider="true"
app:title="Direction Preference"
/>
</PreferenceCategory>

这反映在我的首选项中如果我在打开首选项屏幕之前在设备文件资源管理器中打开它们。然后,当打开主菜单并加载首选项屏幕时,String将更改为数组中未设置的默认值,每次都是一样的。

如何使反映的更改第一次显示在我的设置中?

我认为,如果您的ListPreference和存储的初始Preference值都有相同的键,那么您将获得ListPreference来编辑初始值。但是,这样做可以将默认值设置为ListPreference:

@Override
public void onCreate(Bundle savedInstanceState) {
ListPreference kDirectionPref = (ListPreference) findPreference("kDirectionSetting");
kDirectionPref.setDefaultValue(prefs.getString("kDirection"));

因此,基本上,我要说的是,您应该确保使用相同的键来设置Preference的值,即在第一段代码中,kDirection应该更改为"kDirectionSetting"

最新更新