Come abilitare una preferenza nella mia applicazione Android quando l'altra preferenza è disabilitata?
-
28-09-2019 - |
Domanda
ho usato PreferenceActivity
per avere la preferenza nella mia applicazione Android.Voglio che una preferenza dica che "pref 2" sia abilitata quando l'altra preferenza dice che "pref 1" NON è selezionata e che "pref 2" sia disabilitata quando è selezionato "pref 1".cioè.esattamente opposto a android:dependancy
attributo.
Come lo posso fare?
Soluzione
Non credo che ci sia alcuna soluzione out-of-the-box per esso, vale a dire un attributo dependancy
invertita. Ma c'è sempre il click-ascoltatore:
preference1.setOnPreferenceClickListener(pref1_click);
....
private OnPreferenceClickListener pref1_click = new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
preference2.setEnabled(!preference1.isChecked());
return true;
}
}
Altri suggerimenti
Sì, è possibile fare questo, fuori dalla scatola.
Diciamo che si desidera disabilitare PREF2 quando PREF1 è spento
Ecco il codice (preferenza di layout xml) a mettere dentro per PREF1:
<CheckBoxPreference
android:title="Pref1"
android:key="pref1">
</CheckBoxPreference>
Ecco il codice (di layout xml preferenza) a mettere dentro per PREF2:
<EditTextPreference
android:dialogMessage="Pref 2 dialog"
android:title="Pref2"
android:key="pref2"
android:dependency="pref1">
</EditTextPreference>
Come sigmazero13 detto, per impostazione predefinita disableDependentsState è falso in modo non è necessario includerlo negli attributi PREF1.
Secondo i documenti Qui, puoi aggiungere un attributo al tag CheckBoxPreference in questo modo:
android:disableDependentsState="true"
Per impostazione predefinita, questo è falso, il che significa che i dipendenti sono disabilitati quando la casella di controllo è deselezionata, ma impostandola su vero, dovrebbe avere l'effetto opposto.
Android CheckBox ??
Io parto dal presupposto che si sta utilizzando l'Android.widget.checkBox:
http://developer.android.com/reference/android/widget /CheckBox.html
Prova questo
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 !!