Acceder

Ver la Versión Completa : Juego de preguntas... como mirar que boton han pulsado?


rul3s
20/02/12, 11:44:05
Hola compañeros!!

Vereis, estoy haciendo un juego de preguntas al estilo 50x15, el cual:

-Guardo las preguntas con sus respuestas en un XML.
-Este XML se guarda en internet y cada vez que se abre la app se comprueba que no haya nuevas preguntas, y si las hay, descarga el nuevo XML.
-Las preguntas se cargan en un ArrayList de Objetos "Pregunta", el cual tiene la pregunta, las 4 posibles respuestas, y la correcta.

Hay 2 activities, la principal, en la que se descarga el XML y esto, y cuando le damos al boton jugar se abre la activiti que contiene el juego, que lee las preguntas del XML, crea el ArrayList de preguntas y que muestra ya la pregunta aleatoria con sus 4 posibles respuestas con 4 botones, uno para cada una.

Mi DUDA es:

Como puedo saber que boton han pulsado desde el programa principal? Puedo hacer un onClickListener, pero claro, este genera un nuevo submetodo el cual no puede devolver nada ni tampoco acceder a las propiedades del metodo desde el que se le llama...


pregunta.setText(pAct.getQuestion());
respA.setText(pAct.getAnsw1());
respB.setText(pAct.getAnsw2());
respC.setText(pAct.getAnsw3());
respD.setText(pAct.getAnsw4());

btA.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
if(pAct.getCorrect() == 1){
return true;
}
//StartAct.this.finish();
}
};


Alguna sugerencia?

Un saludo!!

p.d: estoy muy pez en este ambito X-D

kriogeN
20/02/12, 12:26:31
Hola,

Si que puedes acceder a las propiedades de la clase donde está contenida el OnClickListener, puedes hacerlo de 2 formas:

1) Declarando la variable como una variable de la clase, ya sea estática o dinámica.

Suponiendo que el nombre de la Activity es Actividad y la variable se llama Variable (es que esta mañana me he levantado poco original), en el OnClickListener tendrías que hacer esto:

Si es dinámica:

Actividad.this.Variable = lo que sea

Si es estática:

Actividad.Variable = lo que sea

2) Declarando las variables como finales dentro del método donde creas el OnClickListener, en tu ejemplo:

final respA = (TextView).................

Y luego en el OnClickListener podrías usar tranquilamente respA, lo único que no podrías hacer es asignarle una referencia nueva, pero si usar sus métodos y variables.

Por ejemplo no podrías hacer:

respA = respuestaCorrecta

Pero si podrías hacer:

respA.setText("Respuesta Correcta")

Espero que te haya aclarado las dudas, un saludo.