Как включить предпочтение в моем приложении для Android, когда другие предпочтения отключены?
Я использовал PreferenceActivity
для предпочтения в своем приложении для Android. Я хочу, чтобы в одном предпочтении говорилось, что "pref 2" включается, когда другое предпочтение говорит, что "pref 1" НЕ проверяется, а "pref 2" отключается, когда "pref 1" отмечен.
т.е. точно противоположно атрибуту android:dependancy
.
Как я могу это сделать?
Ответы
Ответ 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!!