#events #blackberry #click #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;
}
Комментарии:
1. Это может помочь, если вы не уверены.. Поле field = getFieldWithFocus(); if(экземпляр поля BitmapField){ и затем снова проверьте с помощью регистрации
2. я тоже пробовал это … повторяю, но проблема та же .. регистрация в частном растровом поле = новое растровое поле (Bitmap.getBitmapResource («sign-up-btn.png»),BitmapField. ФОКУСИРУЕМЫЙ); защищенный логический навигационный клик (int status, int time) { Поле f=getFieldWithFocus().getLeafFieldWithFocus(); if (f==регистрация) { UIApplication.getUiApplication().pushScreen(новый экран регистрации()); } возвращает super.navigationClick(статус, время); }
Ответ №1:
Вы можете просто переопределить navigationClick() в самом растровом поле.
private BitmapField signup =new BitmapField (Bitmap.getBitmapResource("sign-up-btn.png"),BitmapField.FOCUSABLE) {
protected boolean navigationClick(int status, int time) {
if((status amp; KeypadListener.STATUS_TRACKWHEEL) == KeypadListener.STATUS_TRACKWHEEL || (status amp; KeypadListener.STATUS_FOUR_WAY) == KeypadListener.STATUS_FOUR_WAY) {
fieldChangeNotify(1);
return true;
}
return super.navigationClick(status, time);
}
}
А затем прикрепите к нему FieldChangeListener. В вашем методе fieldChanged () просто проверьте, что context == 1. Существует некоторая дополнительная проверка состояния, которую вы можете выполнить перед запуском функции fieldChangeNotify(), но это основная часть того, чтобы ваше растровое поле действовало как кнопка. Кроме того, вы могли бы создать свой собственный класс на основе этого (вместо создания анонимного класса), чтобы вы могли использовать его в будущем.