编辑:实际上只有我的ListPreference默认设置没有设置。
当我的应用程序启动时,尽管我调用了setDefaultValues,但没有设置ListPreference默认值。是因为我在错误的上下文中设置默认值吗?
我的首选项都有键和默认值,所以我不确定是什么问题。
我的MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
updateButtons();
}
/*
Function to open the preferences screen.
*/
public void openSettings(View view) {
Intent i = new Intent(this, PreferencesActivity.class);
startActivity(i);
}
}
我的PreferencesActivity.java
public class PreferencesActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
}
public static class MyPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
}
我的偏好.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
android:title="@string/btn_pref1"
android:persistent="false">
<EditTextPreference
android:key="btn1_name"
android:title="@string/btn_name"
android:defaultValue="@string/btn_name" />
<EditTextPreference
android:key="btn1_cmd"
android:title="@string/btn_cmd_name"
android:defaultValue="@string/btn_default_cmd" />
<ListPreference
android:key="btn1_color"
android:title="@string/btn_color"
android:entries="@array/colorArray"
android:entryValues="@array/colorValues"
android:defaultValue="#024c9b"/>
</PreferenceScreen>
<PreferenceScreen
android:title="@string/btn_pref2"
android:persistent="false">
<EditTextPreference
android:key="btn2_name"
android:title="@string/btn_name"
android:defaultValue="@string/btn_name" />
<EditTextPreference
android:key="btn2_cmd"
android:title="@string/btn_cmd_name"
android:defaultValue="@string/btn_default_cmd" />
<ListPreference
android:key="btn2_color"
android:title="@string/btn_color"
android:entries="@array/colorArray"
android:entryValues="@array/colorValues"
android:defaultValue="#024c9b"/>
</PreferenceScreen>
<PreferenceScreen
android:title="@string/btn_pref3"
android:persistent="false">
<EditTextPreference
android:key="btn3_name"
android:title="@string/btn_name"
android:defaultValue="@string/btn_name" />
<EditTextPreference
android:key="btn3_cmd"
android:title="@string/btn_cmd_name"
android:defaultValue="@string/btn_default_cmd" />
<ListPreference
android:key="btn3_color"
android:title="@string/btn_color"
android:entries="@array/colorArray"
android:entryValues="@array/colorValues"
android:defaultValue="#024c9b"/>
</PreferenceScreen>
<PreferenceScreen
android:title="@string/btn_pref4"
android:persistent="false">
<EditTextPreference
android:key="btn4_name"
android:title="@string/btn_name"
android:defaultValue="@string/btn_name" />
<EditTextPreference
android:key="btn4_cmd"
android:title="@string/btn_cmd_name"
android:defaultValue="@string/btn_default_cmd" />
<ListPreference
android:key="btn4_color"
android:title="@string/btn_color"
android:entries="@array/colorArray"
android:entryValues="@array/colorValues"
android:defaultValue="#024c9b"/>
</PreferenceScreen>
<PreferenceScreen
android:title="@string/btn_pref5"
android:persistent="false">
<EditTextPreference
android:key="btn5_name"
android:title="@string/btn_name"
android:defaultValue="@string/btn_name" />
<EditTextPreference
android:key="btn5_cmd"
android:title="@string/btn_cmd_name"
android:defaultValue="@string/btn_default_cmd" />
<ListPreference
android:key="btn5_color"
android:title="@string/btn_color"
android:entries="@array/colorArray"
android:entryValues="@array/colorValues"
android:defaultValue="#024c9b"/>
</PreferenceScreen>
<PreferenceScreen
android:title="@string/btn_pref6"
android:persistent="false">
<EditTextPreference
android:key="btn6_name"
android:title="@string/btn_name"
android:defaultValue="@string/btn_name" />
<EditTextPreference
android:key="btn6_cmd"
android:title="@string/btn_cmd_name"
android:defaultValue="@string/btn_default_cmd" />
<ListPreference
android:key="btn6_color"
android:title="@string/btn_color"
android:entries="@array/colorArray"
android:entryValues="@array/colorValues"
android:defaultValue="#024c9b"/>
</PreferenceScreen>
</PreferenceScreen>
答案 0 :(得分:1)
尝试致电:
PreferenceManager.setDefaultValues(getBaseContext(), R.xml.preferences, false);
在PreferencesActivity
onCreate()
代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceManager.setDefaultValues(getBaseContext(), R.xml.preferences, false);
getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
}
如果这不起作用:清除应用程序数据。 Uninstall
和reinstall
应用
答案 1 :(得分:0)
清除应用程序数据,然后卸载并重新安装该应用程序。 我知道奇怪的解决方案,但是对我来说有效。