Pregunta

I tiene una actividad de preferencias donde puedo cambiar el idioma y el tema de mi solicitud. A partir de ahí vuelvo a la actividad previa a través de la tecla de retroceso, y quiero volver a crear la actividad.

Me las he arreglado para hacer que al reinicializar la disposición en onResume y también llamando onRestoreInstanceState desde allí. Todas las vistas se restauran correctamente, con casillas de verificación comprueban si es necesario, edittexts llenas de textos que dejaron allí anteriormente.

Pero también tengo un botón que está inhabilitado inicialmente, y se habilita sólo cuando se comprueba un botón de radio. El problema es el siguiente: puedo comprobar el botón de radio, el botón se habilita. Luego voy a la configuración, cambiar el tema allí, y el retorno a la primera actividad. Cuando llego allí, el botón de radio se restablezca, se marca, pero el botón está desactivado.

Así que parece que el activado / desactivado Estado no se está guardando en el haz, que parece contrario a la intuición. Y no he encontrado ningún código fuente de Android en el que hace esto, también. Me estoy perdiendo algo, o tengo que escribir mi propio código para eso?

Edit: Por cierto, el estado se guarda sólo por las vistas que tienen las identificaciones. Y que tiene un botón, le garantizo que:)

¿Fue útil?

Solución

La clave aquí es para ver lo que realmente está permitiendo el botón y para asegurarse de que sea consistente en cada acceso a la aplicación.

A partir de su estado de cuenta:

  

Pero también tiene un botón que está inhabilitado inicialmente, y se habilita sólo cuando se comprueba un botón de radio.

parece que usted tiene un oyente en el botón de radio que permite el botón. A partir de esto, tengo entendido que el botón está inicialmente desactivado, lo que significa que tendrá que cambiar eso cada vez que se ejecute la actividad.

Sus opciones son las siguientes:

  • Haga que el botón de radio establecer algún tipo de preferencia mundial que se registró onResume, permitiendo el botón si es necesario
  • Cuando se selecciona el botón de radio, cambiar la configuración global (o tal vez los ajustes de interfaz gráfica de usuario) a una en la que se habilita el botón. Que pueden permanecer siempre hasta que el botón de radio está sin marcar de nuevo.
  • Guardar el enabledness en onSaveInstanceState como usted menciona

Es difícil decir cuál es el más apropiado porque no se ha mencionado el contexto del caso de uso, pero me gustaría evitar el envío a través del paquete a menos que sea una actividad muy utilizado ocasionalmente. Hace mucho sentido hacer un seguimiento de la configuración de botón de radio por cualquiera de guardarla o cambiar la vista hasta nuevo aviso.

Otros consejos

La forma más fácil es permitir que el botón dentro onResume si se marca el botón de radio.

Editar : PreferenceGroup puede manejar las dependencias entre las vistas, pero es necesario que la actividad sea una subclase de PreferenceActivity .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top