2012-08-09 13 views
5

Potrzebuję przykładowego samouczka, jak aktywować i dezaktywować element w działaniu preferencji.Aktywacja i dezaktywacja preferencji

Na przykład na poniższym obrazku, gdy zaznaczono pole wyboru Wi-Fi Nie mogę dotknąć pola wyboru Powiadomienie sieciowe i zmienia kolor na szary, gdy zaznaczone jest pole wyboru Wi-Fi, a następnie mogę dotknąć innego pola wyboru .

W jaki sposób wypełnić kartę Dodaj sieć Wi-Fi, gdy zaznaczone jest pole wyboru whi-fi?

enter image description here

+0

zaakceptuj odpowiedź, jeśli rozwiąże problem. –

Odpowiedz

16

Musimy dodać w pliku preferences.xml się w zależności od preferencji, który jest z innej preferencji androida: zależność = „” kodu.

Na przykład:

 <CheckBoxPreference 
      android:key="checkBox" 
      android:summary="On/Off" 
      android:title="Enable" /> 

     <ListPreference 
      android:entries="@array/listOptions" 
      android:entryValues="@array/listValues" 
      android:key="listpref" 
      android:summary="List preference example" 
      android:title="List preference" 
      android:dependency="checkBox" /> 
0

Kiedy rozpoczyna się w działalność preferencji wyboru metody stanu połączenia wifi onResume, czy cokolwiek chcesz i włączać/wyłączać odpowiednie preferencje.

Może to wyglądać podobnie do tego, prosty przykład, aby dać ci ogólny pomysł.

@Override 
protected void onResume() { 
    super.onResume(); 
    boolean isConnected = getConnectionStatus(); 

    if(isConnected) { 
    connPreference.setEnabled(false); 
    } else { 
    connPreference.setEnabled(true); 
    } 
} 
6

Aktywność twoich preferencji powinna zaimplementować OnSharedPreferenceChangeListener. Pamiętaj, aby zarejestrować i wyrejestrować aktywność z odbiorcą.

Następnie w metodach onResume() i onSharedPreferenceChanged należy ocenić stan preferencji kontrolowania, aby określić, czy preferencja zależna powinna być włączona, czy wyłączona.

@Override 
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 
     final String key) { 
    if (key.equals(PREFERENCE_KEY)) { 
     // handle setting enabled or disabled depending on value of preference 
     if (sharedPreferences.getBoolean(key, false)) { 
      // prefField.setenabled(true); 
     } else { 
      // prefField.setenabled(false); 
     } 

    } 
} 

Jeśli korzystasz również z PreferenceCategory, możesz również włączyć lub wyłączyć tę kategorię jako całość.

+0

Co to jest 'prefField'? jak o tym zadeklarować? – Bishan

+0

prefField jest dowolną wartością preferencji, którą chcesz włączyć/wyłączyć. Tak więc dla PREFERENCE_KEY chcę włączyć/wyłączyć PREFERENCE_KEY_CHILD, więc prefField to PREFERENCE_KEY_CHILD. –

+0

Dzięki za odpowiedź :) – Bishan

Powiązane problemy