android – 在PreferenceActivity中启用和禁用选项

我是创建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);

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...