gpt4 book ai didi

java - ListPreference 默认值未在首选项中设置

转载 作者:行者123 更新时间:2023-11-30 00:33:09 25 4
gpt4 key购买 nike

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

我的 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>

最佳答案

尝试调用:

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

如果这不起作用:清除应用程序数据。 卸载重新安装应用

关于java - ListPreference 默认值未在首选项中设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43925323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com