2012-08-09 22 views
5

Necesito un tutorial de ejemplo sobre cómo activar y desactivar un elemento en la actividad de preferencia.Activar y desactivar una preferencia

Por ejemplo, en la imagen siguiente cuando la casilla de verificación de Wi-Fi no está seleccionada No puedo tocar la casilla de verificación Notificación de red y se vuelve gris, cuando está activada la casilla Wi-Fi, puedo tocar la otra casilla de verificación .

Además, ¿cómo puedo completar la pestaña Agregar red Wi-Fi cuando la casilla de verificación de whi-fi está habilitada?

enter image description here

+0

acepte su respuesta si resuelve el problema –

Respuesta

16

tenemos que añadir en el archivo de salida preferences.xml en la preferencia que está en función de otra preferencia el androide: dependencia = "" código.

Por ejemplo:

 <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

Cuando la actividad preferencia se inicia en el estado de conexión wifi cheque método onResume, o lo que usted desee y activar/desactivar la preferencia apropiada.

Puede parecer algo similar a este simple ejemplo, solo para darle una idea general.

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

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

Su actividad de preferencias debe implementar OnSharedPreferenceChangeListener. Asegúrese de registrar y anular el registro de la actividad con el oyente.

Luego en los métodos onResume() y onSharedPreferenceChanged se evalúa el estado de la preferencia de control para determinar si la preferencia dependiente debe habilitarse o deshabilitarse.

@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); 
     } 

    } 
} 

Si también utiliza una categoría de preferencia, también puede activar o desactivar la categoría en general.

+0

¿Qué es 'prefField'? cómo declarar eso? – Bishan

+0

prefField es el valor de preferencia que quiera habilitar/deshabilitar. Por lo tanto, para PREFERENCE_KEY deseo activar/desactivar PREFERENCE_KEY_CHILD para que prefField sea PREFERENCE_KEY_CHILD. –

+0

Gracias por su respuesta :) – Bishan

Cuestiones relacionadas