2011-04-18 72 views
0

我有一個位圖字段的問題。我試圖在一個位圖字段上有一個點擊事件。在BitmapField上點擊事件

它到目前爲止工作,但問題是事件正在屏幕上的任何地方生成,而我設置它在一個特定的領域。由於我的應用在同一個屏幕上有多個位圖,因此管理它們非常困難。

這裏是我的一段代碼:對BitmapField本身

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

它可能幫助你不確定.. Field field = getFieldWithFocus(); \t \t \t如果(的instanceof BitmapField場){然後再與註冊 – Jisson 2011-04-18 09:07:51

+0

我已經嘗試過了還檢查... LYK這一點,但問題是相同的.. 私人BitmapField註冊=新BitmapField(Bitmap.getBitmapResource \t \t ( 「簽上btn.png」),BitmapField.FOCUSABLE); 保護布爾navigationClick(INT狀態,INT時間) {\t場f = getFieldWithFocus()getLeafFieldWithFocus();如果(f ==註冊) { \t UiApplication.getUiApplication()。pushScreen(new signupScreen()); } return super.navigationClick(status,time); } – 2011-04-18 09:47:53

回答

1

你可以只覆蓋navigationClick()。

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); 
    } 

} 

,然後附加一個FieldChangeListener它。在你的fieldChanged()方法中,只需檢查上下文== 1.在觸發fieldChangeNotify()之前,你可以進行一些額外的狀態檢查,但這是讓你的BitmapField像按鈕一樣工作的基本部分。此外,你可能很好地創建了自己的類(而不是創建一個匿名類),以便將來可以使用它。