2010-11-26 21 views
1

Je cherche un certain nombre picking comme ceux utilisés dans les contrôles de date sur un Android et trouvé cette question: hour/minute picker for android countdown timerComment puis-je obtenir la valeur d'un widget NumberPicker?

Après cet exemple je peux obtenir les contrôles que je veux - Yay! Le problème est que je ne vois pas comment obtenir la valeur que l'utilisateur sélectionne? Normalement, je voudrais définir un écouteur sur le changement et être heureux, mais comment puis-je créer une classe qui implémente l'interface interne com.android.internal.widget.NumberPicker$OnChangedListener? Y a-t-il un autre moyen d'obtenir la sélection actuelle?

+0

N'utilisez pas d'API privées. Nous ne vous empêcherons pas de le faire, mais votre code sera très susceptible de se briser sur les futures versions de la plate-forme ou même sur les appareils avec la même version de plate-forme où le fabricant a personnalisé les choses. – adamp

+0

Bon point - puisque je viens d'écrire un projet de test, je ne suis pas inquiet à ce sujet. OTOH peut-être que je devrais juste utiliser une manière différente d'entrer des valeurs. –

Répondre

0

Vérifiez le source code ... Avez-vous besoin d'un auditeur? getCurrent devrait vous donner la valeur. Avec la réflexion, il serait quelque chose comme:

Method m = c.getMethod("getCurrent"); 
int value = (Integer) m.invoke(o, foo); 

EDIT: Vous pouvez implémenter une interface que vous avez obtenu grâce à la réflexion avec java.lang.reflect.Proxy, voir this question here.

+0

Merci - J'ai trouvé un site web avec des informations javadoc pour cette classe et il n'y avait pas de méthode getCurrent. Je vois de votre lien que c'est le cas. Je vais essayer votre suggestion quand je rentre à la maison. –

+0

A travaillé comme un charme. Pour l'anecdote, je ne fais que jouer ceci et je ne mettrai pas un tel code dans la production car adamp dit qu'il n'est pas bon d'utiliser des API privées comme celle-ci. –