我是创建PreferenceActivity的新手.我的问题是如何通过更改其他首选项来启用和禁用首选项屏幕中的选项?
我的prefs.xml:
<ListPreference android:entries="@array/units" android:entryValues="@array/lunits" android:key="listUnits" android:summary="Units schosssing" android:title="Units" android:defaultValue="C"/> <ListPreference android:entries="@array/palette" android:entryValues="@array/lpalette" android:key="listpalette" android:summary="Palette schosssing" android:title="Palette" android:defaultValue="1"/>
在listUnits中有2个选项,Celsius和Fahrenheit,所以如果用户选择Celsius,则应该启用listpalette,如果用户选择Fahrenheit变为禁用,我该怎么做?
我的设置活动:
public class SettingsActivity extends PreferenceActivity { @Override protected void onCreate(final 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.prefs); } } }
解决方法
此代码可能对您有用.可以作为参考.
首先获取两个ListPreference的实例并应用此方法.
ListPreference mlistUnits,mlistPalette; mlistUnits= (ListPreference)findPreference("listUnits"); mlistPalette= (ListPreference)findPreference("listpalette"); mlistUnits.setEnable(false); mlistPalette.setEnabled(true);
并使用下面的列表
OnPreferenceChangeListener listener = new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference,Object newValue) { // newValue is the value you choose return false; } };
将监听器应用于ListPreference
mlistPalette.setOnPreferenceChangeListener(listener);