Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

preference1.setOnPreferenceClickListener(pref1_click);

....

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

Ответ 2

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

Ответ 3

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

android:disableDependentsState="true"

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

Ответ 4

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!!