我需要基于另一个应用构建一个应用。在我的 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/