gpt4 book ai didi

android - 选中 Checkbox 首选项时如何隐藏相关的 Edittext 首选项?

转载 作者:行者123 更新时间:2023-11-29 01:45:21 25 4
gpt4 key购买 nike

我有一个 CheckBoxPreference 和两个 EditTextPreferences ,它们依赖于 CheckBoxPreference (全部在一个 xml 文件中定义,所有三个都在一个文件中单个 PreferenceScreen)。

我的问题是:当用户取消选中 和< strong>分别检查 Checkboxpreference

目前我只能通过向它们添加 android:dependency 属性来启用/禁用它们。

javaxml 中这样做的解决方案将不胜感激。 :)

最佳答案

无论如何我都不知道通过 xml 来做这件事,这始终是我的首选。但是这个 java 解决方案应该可以工作。

CheckBoxPreference chkPref = (CheckBoxPreference)findPreference("myCheckPref");
EditTextPreference editPref1 = (EditTextPreference)findPreference("myEditCheckPref");
PreferenceGroup editTextParent = getParent(editPref1);

chkPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener(){

public boolean onPreferenceChange(Preference pref, Object value)
{
if(value)
editTextParent.addPreference(editPref1);
else
editTextParent.removePreference(editPref1);

return true;
}

});

由于没有内置的方法来查找父组的父组,因此您还必须定义这些函数:

private PreferenceGroup getParent(Preference preference)
{
return getParent(getPreferenceScreen(), preference);
}

private PreferenceGroup getParent(PreferenceGroup root, Preference preference)
{
for (int i = 0; i < root.getPreferenceCount(); i++)
{
Preference p = root.getPreference(i);
if (p == preference)
return root;
if (PreferenceGroup.class.isInstance(p))
{
PreferenceGroup parent = getParent((PreferenceGroup)p, preference);
if (parent != null)
return parent;
}
}
return null;
}

关于android - 选中 Checkbox 首选项时如何隐藏相关的 Edittext 首选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21844199/

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