android-preferences - 将ListPreference设置为默认不选中

标签 android-preferences

我需要基于另一个应用构建一个应用。在我的 PreferenceScreen 中,我有 2 个 ListPreference 对象。第二个依赖于第一个并禁用,直到选择第一个(仍然需要弄清楚)

我想将第一个 ListPreference 设置为在我的应用程序首次启动时不被选中。我可以通过不分配键来做到这一点,但是我可以在没有键的情况下检索 ListPreference 的值吗?还有其他方法吗?

如果 ListPreferce 没有 key ,我可以使用以下代码在我的 PreferenceScreen 中访问首选项:

ListPreference locationList = (ListPreference)getPreferenceScreen().getRootAdapter().getItem(1);'

我为每个需要引用的首选项都这样做了。使用 SharedPreference 会更好吗?

最佳答案

在您的首选项 XML 中,您可以在第二个 ListPreference 上使用以下内容:

android:dependency="key_of_first_listpreference"
android:enabled="false"

然后在您的代码中,您可以添加一个监听器,以便在选择第一个列表首选项时可以填充第二个列表首选项并启用它,如下所示:

final PreferenceScreen prefsRoot = (PreferenceScreen)getPreferenceScreen();
final ListPreference lpFirst  = (ListPreference) prefsRoot.findPreference("first_listpref_key");
final ListPreference lpSecond = (ListPreference) prefsRoot.findPreference("second_listpref_key");

lpFirst.setOnPreferenceChangeListener(new OnPreferenceChangeListener(){
    @Override public boolean onPreferenceChange ( Preference preference, Object newValue )
    {
        lpSecond.setEntries(R.array.bg_colors);
        lpSecond.setEntryValues(R.array.bg_color_values);
        lpSecond.setEnabled(true);
        return true;
    }
});

关于android-preferences - 将ListPreference设置为默认不选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13626805/

相关文章:

android - 何时使用 CheckBox 何时使用 Switch

android - 设置上的多行标签

android - 在首选项行中添加一个按钮

android - 如何将空白图标空间添加到 preferencefragment

android - 如何从屏幕上删除 Android 偏好设置

android - 从非 PreferenceActivity/Fragment 更改首选项值

android - 我的 ListPreference 在运行时没有改变 App Theme

android - PreferenceManager.setDefaultValues 不适用于自定义首选项

android - AppCompat PreferenceActivity 在Android 4.4 中左右出现奇怪的padding

android - 在 Android 3.0+ 上设置首选项的初始摘要