Как включить предпочтение в приложении для Android, когда другие предпочтения отключены?

Я использовал PreferenceActivity для предпочтения в своем приложении для Android. Я хочу, чтобы в одном из предпочтений говорилось, что «pref 2» включается, когда другое предпочтение говорит, что «pref 1» НЕ проверяется, а «pref 2» отключается, когда установлен «pref 1». Т.е. точно противоположно атрибуту android:dependancy .

Как я могу это сделать?

Я не думаю, что для него есть готовое решение, то есть инвертированный атрибут dependancy . Но всегда есть клик-слушатель:

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

Да, это можно сделать из коробки. Предположим, вы хотите отключить pref2, когда pref1 выключен
Вот код (предпочтительный xml-макет) для ввода pref1:

 <CheckBoxPreference android:title="Pref1" android:key="pref1"> </CheckBoxPreference> 

Вот код (предпочтительный xml-макет) для ввода pref2:

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

Как сказал sigmazero13, по умолчанию disableDependentsState является ложным, поэтому вам не нужно включать его в атрибуты pref1.

В соответствии с документами здесь вы можете добавить атрибут в тег CheckBoxPreference, например:

 android:disableDependentsState="true" 

По умолчанию это значение false, что означает, что иждивенцы отключены, когда флажок снят, но если установить его в true, он должен иметь противоположный эффект.

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); } } } 

Удачи!!