我是创建 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 将被禁用,如何我这样做?
我的设置 Activity :
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);
关于android - PreferenceActivity 中的启用和禁用选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20761543/