0

ビットマップフィールドに問題があります。ビットマップ フィールドでクリック イベントを発生させようとしています。

これまでのところ機能していますが、問題は、特定のフィールドに設定しているときに、画面のどこにでもイベントが生成されることです。私のアプリでは同じ画面に複数のビットマップがあるため、それらを管理するのは大変です。

これが私のコードです:

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

1 に答える 1

1

BitmapField 自体で 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() メソッドでは、context == 1 であることを確認するだけです。fieldChangeNotify() を起動する前に実行できるステータスの追加チェックがありますが、これは BitmapField をボタンのように動作させるための基本的な部分です。また、今後使用できるように、(匿名クラスを作成するのではなく) これから独自のクラスを作成することもできます。

于 2011-04-18T13:13:18.063 に答える