2010-08-17 2 views
2

Je construis un jeu qui fonctionne comme un type de quiz. Je pose la question à l'utilisateur et quand il soumet la réponse (cliquez ou touchez la bonne réponse) j'ai besoin de rafraîchir la page avec une autre question.La meilleure façon de redémarrer l'activité sur Android?

Comment dois-je mettre cela en œuvre? Comment attendre que les utilisateurs répondent et continuent lorsque l'écouteur onClick ou OnTouch se termine? Devrais-je utiliser une classe Handler, des intentions ou quelque chose d'autre?

Merci d'avance pour l'aide.

edit: Je veux le scénario suivant: Sur l'écran j'ai une question et 3-4 ImageButtons cliquables. Je construis une partie de la disposition dinamically de la fonction showQA() personnalisée. L'utilisateur choisit la réponse et s'il clique sur la bonne réponse, je devrais commencer un type d'animation sur l'écran. Je l'ai fait à partir de onClickListener. Maintenant, j'ai besoin de construire à nouveau la mise en page (montrer la nouvelle question et les réponses) de la fonction showQA() qui doit être appelée après que l'animation a montré à l'utilisateur. Comment puis-je savoir quand onClickListener() a terminé son travail?

+0

Ne redémarrez pas l'activité. Appelez une nouvelle activité ou changez d'avis. Redémarrer l'activité va à l'encontre de l'idée android – Falmarri

+0

Oui, vous avez raison.Et même si j'appelle la même activité, l'effet de changement d'activité apparaît et je n'en ai pas besoin dans mon jeu. –

Répondre

0

J'ai résolu le problème en utilisant AnimationListener. J'ai démarré l'animation après que l'utilisateur a cliqué sur la réponse et appelé la fonction showQA() pour créer l'interface utilisateur à partir de la méthode onAnimationEnd.

2

Je pense que dans votre cas une activité serait suffisante et que vous placez juste deux points de vue (question, réponse) dans cette activité sur laquelle vous mettez les visibilités en conséquence et mettre à jour le contenu de questions/réponses. Pour le click/touch: dépend du type de réponse que l'utilisateur doit fournir (entrer du texte, cliquer sur un bouton, utiliser un curseur, etc.). Mais un écouteur serait la bonne chose, c'est-à-dire onClickListener pour un bouton. Pour un quiz, vous voudrez probablement implémenter votre logique spéciale dans les widgets personnalisés que vous étendez à partir des éléments de base, par exemple un groupe de boutons pour A) - E) boutons de réponse (flexibles en nombre), etc. résumé la logique du jeu un peu.

Mais cela dépend vraiment pas les détails de votre jeu, ne peut pas dire beaucoup withough connaître le jeu en détail.

+0

Ok, dans mon premier post, j'ai essayé de simplifier le scénario. Sur l'écran j'ai une question et 3-4 ImageButtons cliquables. Je construis une partie de la disposition dinamically de la fonction showQA() personnalisée. Je veux le scénario suivant: L'utilisateur choisit la réponse et s'il cliquait sur la bonne réponse, je devrais commencer un type d'animation sur l'écran. Je l'ai fait à partir de onClickListener. Maintenant, j'ai besoin de construire à nouveau la mise en page (montrer la nouvelle question et les réponses) de la fonction showQA() qui doit être appelée après que l'animation a montré à l'utilisateur. Comment puis-je savoir quand onClickListener() a terminé son travail? –

+0

à la fin de la méthode ClickListener/onClick, vous pouvez ajouter n'importe quel code et appeler la méthode que vous voulez, c'est-à-dire showQA() si vous aimez –

1

En règle générale, la meilleure façon d'organiser votre application est de commencer une nouvelle instance d'une activité pour chaque nouvelle vue.

Dans votre cas, vous pourriez avoir une activité de base qui a une liste de toutes les questions.

Votre ShowQuestionActivity prend dans une question et la liste des choix de réponses par extras d'intention. BaseActivity démarre ShowQuestionActivity pour le résultat avec la première question.

Lorsque l'utilisateur clique sur une réponse, ShowQuestionActivity se termine. Il peut passer la réponse avec un extra.

BaseActivity commence immédiatement ShowQuestionActivity pour résultat la deuxième question. Pour l'utilisateur, cela apparaîtra comme si vous venez de passer d'une question à l'autre en douceur.

Vous pouvez également faire en sorte que chaque ShowQuestionActivity démarre la prochaine ShowQuestionActivity, mais vous devez ensuite suivre la question à afficher et toutes les réponses via des intentions.

+0

Je comprends ce que vous voulez dire. Cependant, je n'ai pas réussi à le rendre «lisse». Je veux dire, il montre toujours la transition quand une nouvelle activité est démarrée. Je veux obtenir le même résultat que je viens d'appeler imageView.setBackgroundResouce (R.drawable.something_else) .. Voici le code que j'ai essayé: Intention intention = new Intent(); intent.setClass (SomeClass.this, CalledClass.class); startActivity (intention); finish(); –

+0

Voir http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NO_ANIMATION –

+0

J'ai essayé de placer ce drapeau dans l'intention et rien n'a changé. J'ai aussi essayé de le passer à startActivityForResult() mais sans résultat aussi. Je suis en développement sur Android 2.1 et les tests sur HTC Desire. –

Questions connexes