2010-06-25 15 views
18

Tengo un TabHost con tres pestañas. El contenido de la primera pestaña es la intención de una actividad personalizada cuya vista de contenido es una disposición relativa que contiene dos EditTexts y dos CheckBoxes (y un botón).Android: EditText no puede obtener el foco después de volver a habilitarse

Cada checbox, cuando está tildado, habilita/deshabilita uno EditText y el otro checkbox. y lo hice así:

chkPolaziste.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    { 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
     { 
      if (isChecked) 
      { 
       entryPolaziste.setFocusable(false); 
       entryPolaziste.setEnabled(false); 
       chkOdrediste.setFocusable(false); 
       chkOdrediste.setEnabled(false); 
      } 
      else 
      { 
       entryPolaziste.setEnabled(true); 
       entryPolaziste.setFocusable(true); 
       chkOdrediste.setEnabled(true); 
       chkOdrediste.setFocusable(true); 
      } 
     } 
    }); 

Y eso funciona. Cuando una casilla de verificación está marcada, desactiva la otra casilla de verificación y su EditText, y cuando la desactivo, EditText y la otra casilla de verificación están habilitadas. Pero, después de que está habilitado, no puedo escribir nada en EditText. Simplemente parpadea por un momento cuando yo hago clic en él y cambio el foco a otra vista. Me parece que el control no está completamente habilitado.

También traté de forzar el foco en la nueva edición de EditText con requestFocus(), y traté de configurarFocusableInTouchMode(), pero ninguna de las dos funcionó.

No tengo un dispositivo Android, así que solo pruebo esto en el emulador (Min SDK es 1.6).

+0

Nota importante: Este comportamiento se manifiesta solo por contacto (cuando hago clic en EditText, pero funciona normalmente con trackball (es por eso que he probado el método setFocusableInTouchMode). –

Respuesta

35

Solución:

Uso setFocusableInTouchMode y setFocusable, tanto de ellos.

+0

Gracias, esto funcionó para mí. – TheRealKingK

+0

Gracias - ¡Esto fue de gran ayuda! (¿Alguna idea de por qué esto es necesario?) – HeavyE

+1

Guau, esto me salvó de la depuración de maratón –

Cuestiones relacionadas