Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当禁用其他首选项时,如何在我的android应用程序中启用首选项?_Android_Android Preferences - Fatal编程技术网

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

当禁用其他首选项时,如何在我的android应用程序中启用首选项?,android,android-preferences,Android,Android Preferences,我在android应用程序中使用了PreferenceActivity。我希望在未选中其他首选项(如“pref 1”)时启用一个首选项(如“pref 2”),在选中“pref 1”时禁用“pref 2”。 i、 e.与android完全相反的android:dependency属性 我怎样才能做到这一点呢?我认为没有现成的解决方案,即倒置的依赖性属性。但总有一个点击监听器: preference1.setOnPreferenceClickListener(pref1_click); ....

我在android应用程序中使用了
PreferenceActivity
。我希望在未选中其他首选项(如“pref 1”)时启用一个首选项(如“pref 2”),在选中“pref 1”时禁用“pref 2”。 i、 e.与android完全相反的
android:dependency
属性


我怎样才能做到这一点呢?

我认为没有现成的解决方案,即倒置的
依赖性属性。但总有一个点击监听器:

preference1.setOnPreferenceClickListener(pref1_click);

....

private OnPreferenceClickListener pref1_click = new OnPreferenceClickListener() {
    public boolean onPreferenceClick(Preference preference) {
        preference2.setEnabled(!preference1.isChecked());
        return true;
    }
}
Android复选框??
我假设您正在使用Android.widget.checkBox:

试试这个

 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);
         }
     }
 }
祝你好运

根据文档,您可以向CheckBoxPreference标记添加一个属性,如下所示:

android:disableDependentsState="true"

默认情况下,这是false,这意味着当复选框未选中时,依赖项将被禁用,但如果将其设置为true,则会产生相反的效果。

是,可以立即执行此操作。 假设您想在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属性中。

否我使用的是android.preference.CheckBoxPreference而不是android.widget.checkBox。无论如何,感谢您的关注。我自己测试了它,这完全符合OP的要求,都在XML=]中。必须将该属性添加到其他人依赖的首选项中,而不是依赖的首选项。依我看,如果这个选择是由依赖性偏好做出的,那就更好了。。。如果两个依赖偏好需要根据另一个偏好的值表现不同,该怎么办?无论如何……对我来说,最好在xml中执行这类操作。如果这些首选项在不同的xml布局上呢?@Maxrunner我使用字符串(在strings.xml文件中)作为键名。这样,您就可以在代码和其他xml文件中引用密钥。这应该行得通。