当禁用其他首选项时,如何在我的android应用程序中启用首选项?
我在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); ....
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文件中引用密钥。这应该行得通。