首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CheckBox PreferenceScreen

CheckBox PreferenceScreen
EN

Stack Overflow用户
提问于 2012-02-23 12:34:27
回答 1查看 3.4K关注 0票数 1

我正在用这个xml代码做一个preferenceScreen:

代码语言:javascript
复制
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:orderingFromXml="true">
<PreferenceCategory 
       android:key="pref1" 
       android:title="Search All">
    <CheckBoxPreference 
          android:key="check_all" 
          android:title="Check"/>
</PreferenceCategory>
<PreferenceCategory 
       android:title="Specific Search" 
       android:key="pref2">
    <ListPreference 
          android:title="Food" 
          android:key="opcion1"
          android:dialogTitle="Escoge Categoria"
          android:entryValues="@array/codigoCateg" 
          android:entries="@array/categorias" 
          android:negativeButtonText="Cancel"/>
    <ListPreference android:title="Dificultad"/>
    <ListPreference android:title="Otras"/>
</PreferenceCategory>

Java代码:

代码语言:javascript
复制
public class OpcionesBusqueda extends PreferenceActivity {

boolean CheckBoxPreference;
private PreferenceCategory Pref2;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.video_search);

    Pref2=(PreferenceCategory)findPreference("pref2");

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

    CheckBoxPreference = prefs.getBoolean("check_all", true);

    if(CheckBoxPreference==true){
        Pref2.setEnabled(false);
    }
    else{
        Pref2.setEnabled(true);
    }
}

}

我想要做的是,如果选中了复选框,那么应该禁用pref2 (preferencecategory2),如果未选中,则应该启用它。有件事我做错了,也许不止一件。

谢谢。

我遵循了Alex的回答,并对欲望代码进行了一些更改,下面是更正的代码:

代码语言:javascript
复制
public class OpcionesBusqueda extends PreferenceActivity {

private CheckBoxPreference Check;
private PreferenceCategory Pref2;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.video_search);

    Check=(CheckBoxPreference)findPreference("check_all");
    Pref2=(PreferenceCategory)findPreference("pref2");

    Check.setOnPreferenceChangeListener(new CheckBoxPreference.OnPreferenceChangeListener() {
        public boolean onPreferenceChange(final Preference preference, final Object newValue) {
                Pref2.setEnabled((Boolean)newValue == false);
                return true;
        }
    });        

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-23 13:22:14

您可能希望将OnPreferenceChangeListener设置为check_all首选项,并在该OnPreferenceChangeListeneronPreferenceChaged中更改pref2

代码语言:javascript
复制
CheckBoxPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
     boolean onPreferenceChange(Preference preference, Object newValue) {
          Pref2.setEnabled((Boolean)newValue == false); 
     }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9413178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档