ButtonField と BitmapField を作成しました..
public class MyCanvas extends MainScreen implements FieldChangeListener
{
HorizontalFieldManager hfm;
private Bitmap startBitmap;
private BitmapField startBitmapField;
private ButtonField okButton;
MyCanvas()
{
hfm = new HorizontalFIeldManager();
startBitmap = Bitmap.getBitmapResource("start.png");
startBitmapField = new BitmapField(startBitmap);
startBitmapField.setChangeListener(this);
hfm.add(startBitmapField);
okButton = new ButtonField("Ok", ButtonField.CONSUME_CLICK | ButtonField.NEVER_DIRTY);
okButton.setChangeListener(this);
hfm.add(okButton);
}
public void fieldChanged(Field field, int context)
{
if(field == startBitmapField)
{
System.out.println("Touched START...");
}
else if(field == okButton)
{
System.out.println("Touched Ok...");
}
}
}
しかし、Blackberry 4.7 シミュレーターでは、ButtonField または BitmapField のクリックは発生しません。
Blackberry Storm 用にビルドしたいので、Blackberry 4.7 を使用しています
Blackberry Storm の ButtonField & BitmapField のクリック/タッチ イベントを処理するには?
私はButtonFieldとBitmapFieldsを次のように作成しています
okButtonField = new ButtonField("Ok", BitmapField.HIGHLIGHT_SELECT | BitmapField.FOCUSABLE);
startBitmapField = new BitmapField(startBitmap, BitmapField.HIGHLIGHT_SELECT | BitmapField.FOCUSABLE);
その作業は..
protected boolean touchEvent(TouchEvent event)
{
switch( event.getEvent() )
{
case TouchEvent.DOWN: ........
return true;
case TouchEvent.MOVE: .......
return true;
case TouchEvent.UP: ........
return true;
case TouchEvent.CLICK:
if(deleteButton.isFocus())
{
System.out.println("Touched DEL ..........");
}
else if(okButton.isFocus())
{
System.out.println("Touched OK ..........");
}
else if(startBitmapField.isFocus())
{
System.out.println("Touched START ..........");
}
return true;
}
return false;
}
ただし、フォーカスがある同じボタンが呼び出されるたびに。
「OK」ボタンにフォーカスがある場合、「削除」ボタンをクリックしても「OK」ボタンが呼び出されます。
では、ボタンクリックのフォーカスを変更するにはどうすればよいでしょうか? ButtonField または BitmapField のどちらがクリックされても、フォーカスを取得する必要がありますか?
"button.isClicked() like button.isFocus()" をチェックする方法はありますか?