当其他首选项被禁用时,如何在我的Android应用程序中启用首选项?

时间:2010-04-20 06:08:41

标签: android android-preferences

我在我的android应用程序中使用了PreferenceActivity来优先选择。我想要一个偏好说“pref 2”在其他偏好说“pref 1”未被选中时被启用,而“pref 2”在被选中“pref 1”时被禁用。 即恰好与android:dependancy属性相反。

我该怎么做?

4 个答案:

答案 0 :(得分:92)

是的,可以开箱即用。 假设你想在pref1关闭时禁用pref2 这是为pref1:

输入的代码(首选项xml布局)
<CheckBoxPreference
    android:title="Pref1"
    android:key="pref1">
</CheckBoxPreference>

这是为pref2输入的代码(首选项xml布局):

<EditTextPreference
    android:dialogMessage="Pref 2 dialog"
    android:title="Pref2"
    android:key="pref2" 
    android:dependency="pref1">
</EditTextPreference>

与sigmazero13一样,默认情况下disableDependentsState为false,因此您不需要将它包含在pref1属性中。

答案 1 :(得分:30)

根据文档here,您可以像这样在CheckBoxPreference标记中添加一个属性:

android:disableDependentsState="true"

默认情况下,这是false,这意味着当取消选中复选框时会禁用依赖项,但是通过将其设置为true,它应该具有相反的效果。

答案 2 :(得分:9)

我认为没有任何开箱即用的解决方案,即倒置的dependancy属性。但总有点击监听器:

preference1.setOnPreferenceClickListener(pref1_click);

....

private OnPreferenceClickListener pref1_click = new OnPreferenceClickListener() {
    public boolean onPreferenceClick(Preference preference) {
        preference2.setEnabled(!preference1.isChecked());
        return true;
    }
}

答案 3 :(得分:0)

Android CheckBox ??


我假设你使用的是Android.widget.checkBox:

  

http://developer.android.com/reference/android/widget/CheckBox.html

试试这个

 public class MyActivity extends Activity {
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);

         setContentView(R.layout.content_layout_id);

         final CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkbox_id);
         if (checkBox1.isChecked()) {
             checkBox2.setChecked(false);
         }
     }
 }

古德纳克!!