Pregunta

Estoy seguro de que esto ha sido contestada pero demostrado ser incapaz de encontrarlo. Así que disculpen mi redundancia.

Lo que estoy tratando de hacer es emular el botón "Inicio", que hace retroceder a la pantalla de inicio de Android. Así que aquí es lo que me causa problemas:

  • Tengo 3 actividades de lanzadores. La primera de ellas (que está conectado al icono de pantalla de inicio) es sólo una actividad de configuración (protegido por contraseña). No va a ser utilizado por el usuario (solo administrador)
  • Uno de los otros 2 (ambos accede a través de un widget de la aplicación) es una aplicación de cuestionario. Estoy permitiendo a saltar de nuevo entre las preguntas a través del botón Atrás o un botón de retroceso interfaz gráfica de usuario también. Cuando se termina el cuestionario resumo las respuestas dadas y proporcionar un botón "Finalizar" que debería tener la parte posterior de usuario a la pantalla principal.

Para la aplicación cuestionario Yo uso una sola actividad (llamado ItemActivity) que llama a sí mismo (que es la recursividad, así cuando se utilizan las intenciones?) Para saltar de una pregunta a otra:

Questionnaire.serializeToXML();  
Intent i = new Intent().setClass(c, ItemActivity.class);  
if(Questionnaire.instance.getCurrentItemNo() == Questionnaire.instance.getAmountOfItems()) {  
    Questionnaire.instance.setCompleted(true);  
} else Questionnaire.instance.nextItem();  
startActivity(i);

La pantalla muestra final de algo como "Gracias por participar", así como el botón anteriormente descrito que debería tener uno nuevo a la pantalla de inicio. Pero yo realmente no entiendo cómo salir de la Actividad correctamente. Tengo, por ejemplo, this.finish(); utilizado pero esto trae extrañamente el "Gracias" pantalla de nuevo. Entonces, ¿cómo puedo simplemente salir por la parte posterior salto a la pantalla de inicio ??

Lo siento por el inconvinience.
Saludos, Steff

¿Fue útil?

Solución

Parece que lo que está sucediendo es que usted tiene múltiples copias de sus actividades se abren al mismo tiempo. Cada vez que se inicia una nueva instancia de una actividad que sólo estamos agregando otras nuevas a la pila - todas las antiguas actividades están todavía allí. Cuando se llama a this.finish(), sólo que está mostrando la siguiente actividad más reciente que estaba abierta. No estoy seguro de por qué ese es el "Gracias" desde la pantalla de suponer que sólo se pone abrió al final, pero entonces yo no correspondan plenamente a la secuencia de sus actividades en las llaman.

Lo que usted puede intentar hacer para solucionarlo es o bien: 1) utilizar un finish() cada vez que después de comenzar una nueva actividad para una pregunta diferente (por lo que sólo hay siempre una actividad cuestión abierta a la vez), o 2) ver si se puede hacer uso de la bandera CLEAR_TOP intención. Esto comienza la actividad de destino, mientras que matar cualquier cosa que pudiera haber estado por encima de ella en la pila. Por ejemplo, si tiene actividades: A, B, C, C, C, C, C (etc para cada pregunta), a continuación, iniciar con un CLEAR_TOP va a matar a todas las instancias de B y C. Se podría encajar esto en su estructura de programas cambiando la primera pantalla que ve el usuario cuando empiezan un cuestionario. Esto mostraría un mensaje de 'bienvenida' por defecto con un botón para iniciar el cuestionario. Sin embargo, si se inició con un valor particular incluido con la intención, sería mostrar la página "Gracias" mensaje.

Si lo hace, entonces una vez que finish() actividad A, el usuario será devuelto a donde estaban antes de que comenzaran su aplicación -. Presumiblemente la pantalla de inicio si se inició con una appwidget

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