Как включить настройки в моем приложении для Android, когда другие настройки отключены? - PullRequest
22 голосов
/ 20 апреля 2010

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

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

Ответы [ 4 ]

92 голосов
/ 23 июня 2011

Да, это можно сделать из коробки. Допустим, вы хотите отключить 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 имеет значение false, поэтому вам не нужно включать его в атрибуты pref1.

30 голосов
/ 16 мая 2011

Согласно документам здесь , вы можете добавить атрибут в тег CheckBoxPreference следующим образом:

android:disableDependentsState="true"

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

9 голосов
/ 20 апреля 2010

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

preference1.setOnPreferenceClickListener(pref1_click);

....

private OnPreferenceClickListener pref1_click = new OnPreferenceClickListener() {
    public boolean onPreferenceClick(Preference preference) {
        preference2.setEnabled(!preference1.isChecked());
        return true;
    }
}
0 голосов
/ 20 апреля 2010

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

GOODLUCK !!

...