ListPreference默认值未在“首选项”中设置

时间:2017-05-11 20:52:33

标签: java android

编辑:实际上只有我的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>

2 个答案:

答案 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();
  }

如果这不起作用:清除应用程序数据。 Uninstallreinstall应用

答案 1 :(得分:0)

清除应用程序数据,然后卸载并重新安装该应用程序。 我知道奇怪的解决方案,但是对我来说有效。