我不知道無論如何要通過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;
}
你搖滾:)感謝很多人:)我有嘗試類似這樣的事情,無需PreferenceGroup :)雖然我瞭解你的代碼,你能解釋一下爲什麼你需要這個父母和偏好組嗎?如果我添加一個依賴項,那麼依賴節點是另一個節點的子項? – SoulRayder