2011-04-18 3 views
0

J'ai un problème avec bitmapfield. J'essaie d'avoir un événement click sur un champ Bitmap.Evénement Click sur un BitmapField

Cela fonctionne jusqu'à présent, mais le problème est que l'événement est généré n'importe où sur l'écran pendant que je le configure sur un champ particulier. Comme mon application dispose de plusieurs bitmaps sur le même écran, il est difficile de les gérer.

Voici mon morceau de code:

private BitmapField _HeaderBitmap =new BitmapField(Bitmap.getBitmapResource ("headerImg.png")); 
final private Bitmap _secondHeaderBitmap = Bitmap.getBitmapResource("connect.PNG"); 
private BitmapField signup =new BitmapField (Bitmap.getBitmapResource("sign-up-btn.png"),BitmapField.FOCUSABLE); 

protected boolean navigationClick(int status, int time) 
{ 
    if (signup.isFocus()) 
    UiApplication.getUiApplication().pushScreen(new signupScreen()); 

    return true; 
} 
+0

Il peut vous aider à ne pas être sûr. Field field = getFieldWithFocus(); \t \t \t si (champ instanceof BitmapField) {puis vérifier à nouveau avec votre inscription – Jisson

+0

je l'ai essayé aussi ... lyk cela, mais le problème est le même .. inscription de BitmapField privé = new BitmapField (Bitmap.getBitmapResource \t \t ("sign-up-btn.png"), BitmapField.FOCUSABLE); boolean protégé navigationClick (statut d'int, int temps) {\t champ f = getFieldWithFocus() getLeafFieldWithFocus(). if (f == inscription) { \t UiApplication.getUiApplication(). PushScreen (nouveau signupScreen()); } return super.navigationClick (état, heure); } –

Répondre

1

Vous pouvez simplement remplacer le navigationClick() sur le BitmapField lui-même.

private BitmapField signup =new BitmapField (Bitmap.getBitmapResource("sign-up-btn.png"),BitmapField.FOCUSABLE) { 
    protected boolean navigationClick(int status, int time) { 
     if((status & KeypadListener.STATUS_TRACKWHEEL) == KeypadListener.STATUS_TRACKWHEEL || (status & KeypadListener.STATUS_FOUR_WAY) == KeypadListener.STATUS_FOUR_WAY) {  
      fieldChangeNotify(1); 
      return true; 
     } 
     return super.navigationClick(status, time); 
    } 

} 

Ensuite, attachez-lui un FieldChangeListener. Dans votre méthode fieldChanged(), vérifiez simplement ce contexte == 1. Il y a quelques vérifications supplémentaires sur le statut que vous pouvez faire avant de déclencher fieldChangeNotify() mais c'est la partie de base pour que votre BitmapField agisse comme un bouton. En outre, vous pourriez bien créer votre propre classe à partir de ceci (plutôt que de créer une classe anonyme) afin que vous puissiez l'utiliser dans le futur.