Accès à une méthode ensemble d'un argument d'une méthode surchargée dans Android?
-
27-09-2019 - |
Question
Cela doit être une question de noob, mais je ne peux pas trouver la bonne attente pour obtenir les résultats suivants:
Dans Android, j'ai fait une MyView de sous-classe l'extension d'une classe View. En B, j'ai défini une méthode mMethod pas présent dans la classe View.
Maintenant, je veux mettre une interface OnClickListener sur MyView. Faire cela, je dois passer outre une méthode onClick lors de la définition d'une nouvelle OnClickListener. De plus, je voudrais accéder à la méthode mMethod dans onClick, mais la méthode surchargée attend une instance de View classe, pas un est un MyView. Que puis-je faire?
Pour être plus précis:
public class MyView extends View{
...
public void mMethod(){
...
}
}
Et dans la classe principale (activité)
MyView myView = new MyView ()
//It's not the correct constructor, but it's not the point
myView.setOnClickListener(new OnClickListener(){
@Override
public boolean onClick(View v){
//Here I would like to access mMethod of MyView
???
}
}
est en utilisant myView.mMethod()
est la seule solution? Est-il possible de downcaster v
à (MyView)v
? Dans l'affirmative, comment le faire ? Dois-je définir une sous-interface?
Merci!
La solution
Eh bien, vous pouvez utiliser:
public boolean onClick(View v) {
MyView mv = (MyView) v;
mv.myMethod();
}
De cette façon, vous savez que vous êtes sur le point de vue fonctionnement droite - et il lancera une exception si vous êtes donné le mauvais type de vue. (Si vous ne voulez pas jeter une exception, vous pouvez utiliser instanceof
pour vérifier que c'est le bon type de vue d'abord.)