Come abilitare una preferenza nella mia applicazione Android quando l'altra preferenza è disabilitata?

StackOverflow https://stackoverflow.com/questions/2672922

  •  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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top