En Java: Quelle est la meilleure façon de passer une méthode d'un objet à un autre afin qu'elle puisse être appelée plus tard par le second objet?Méthode déléguée appelant en Java
Je viens d'un contexte ActionScript où il est aussi facile de passer des références à des méthodes que de passer des références à des variables, mais cela semble beaucoup plus difficile en Java. Les premiers liens que j'ai trouvé à plat disent que ce n'est pas possible (et cela peut avoir été au moment de leur publication), mais j'ai ensuite trouvé http://www.javacamp.org/javavscsharp/delegate.html qui détaille comment cela peut être accompli.
Mon problème avec l'utilisation de l'exemple de Javacamp est la référence à la méthode basée sur une chaîne. Les méthodes sont renommées tout le temps et une référence de chaîne ne se plaindra qu'une fois que vous aurez exécuté cette fonction, par opposition à la compilation d'un lien explicite approprié.
N'y a-t-il aucun moyen de le faire avec des liens explicites appropriés à la méthode que vous voulez que l'autre classe exécute?
modèle de ce que j'espère accomplir:
- joueur clique sur un bouton de mise à niveau sur Activité1> Activité1 passe méthode mise à niveau vers une nouvelle activité de confirmation
- joueur clique sur « Oui »> Activité de confirmation appelle la méthode de mise à niveau passé dans de Activité1
- OU: joueur clique sur « Non »> Activité de confirmation ferme
EDIT: Pour être clair, je suis Je ne cherchais pas de solution de méthode statique car cela nécessiterait que mon activité de confirmation contienne de nombreuses lignes de logique pour lesquelles la méthode statique appelle. L'activité de confirmation sera utilisée partout dans mon application: un simple "Êtes-vous sûr de vouloir X?" -Oui -Non, si oui, exécuter X
Je cherche actuellement à mettre en œuvre onActivityResult pour éviter ce problème mais ce sera plus logique que ce que je préfère pour ce genre de problème.
Vérifiez le motif de commande. –
Depuis que vous travaillez sur Android, voici ce que vous avez besoin: http://stackoverflow.com/a/16800770/1400672 –