BlackBerry Storm 9530 трассировка сенсорных событий во время прокрутки
-
25-09-2019 - |
Вопрос
Эй, на моем экране, есть поле редактирования и 2 пользовательских полей кнопок «ОК» и «Отмена» ниже Buttonfield. Есть несколько более фокусируемых полей этикеток
Когда я пишу имя в поле «Редактировать», и нажмите «Ввод», то фокус находится на кнопку «ОК», но как настроить фокус на кнопке «Отмена».
Более того, прокрутка фокусировки не движется автоматически впереди ???
Что делать, может быть, я запутался с сенсорными событиями и их обработкой !!!
Пожалуйста, помогите !!!!!!!!!!!!
Код:
txt_Name = new EditField(TextField.NO_NEWLINE)
{
public void paint(net.rim.device.api.ui.Graphics g)
{
g.setColor(Color.MAROON);
super.paint(g);
}
};
txt_Name.setFont(font);
v1 = new VerticalFieldManager();
v1.add(txt_Name );
ButtonField btn1 = new ButtonField("OK",ButtonField.CONSUME_CLICK);
ButtonField btn2 = new ButtonField("CANCEL",ButtonField.CONSUME_CLICK);
v2 = new VerticalFieldManager();
v2.add(btn1);
v2.add(btn2);
LabelField l1 = new LabelField("Hello Moon ",Field.Focussable);
LabelField l2 = new LabelField("Hello Citizen",Field.Focussable);
LabelField l3 = new LabelField("Hello People",Field.Focussable);
LabelField l4 = new LabelField("Hello world",Field.Focussable);
v3 = new VerticalFieldManager();
v3.add(l1);
v3.add(l2);
v3.add(l3);
v3.add(l4);
add(v1);
add(v2);
add(v3);
}
protected boolean navigationClick(int status, int time)
{
if(OK.isFocus())
{
//execute some code
return true;
}
if(CANCEL.isFocus())
{
//execute some code
return true;
}
}
Решение 2
txt_Name = new EditField(TextField.NO_NEWLINE)
{
public void paint(net.rim.device.api.ui.Graphics g)
{
g.setColor(Color.MAROON);
super.paint(g);
}
};
txt_Name.setFont(font);
v1 = new VerticalFieldManager();
v1.add(txt_Name );
ButtonField btn1 = new ButtonField("OK",ButtonField.CONSUME_CLICK);
ButtonField btn2 = new ButtonField("CANCEL",ButtonField.CONSUME_CLICK);
h2 = new HorizontalalFieldManager();
h2.add(btn1);
h2.add(btn2);
LabelField l1 = new LabelField("Hello Moon ",Field.Focussable);
LabelField l2 = new LabelField("Hello Citizen",Field.Focussable);
LabelField l3 = new LabelField("Hello People",Field.Focussable);
LabelField l4 = new LabelField("Hello world",Field.Focussable);
v3 = new VerticalFieldManager();
v3.add(l1);
v3.add(l2);
v3.add(l3);
v3.add(l4);
add(v1);
add(h2);
add(v3);
}
protected boolean navigationClick(int status, int time)
{
int index = h2.getFieldwithFocusIndex();
if(h2==0)
{
//execute some code for OK
return true;
}
if(h2==1)
{
//execute some code for cancel
return true;
}
}
Другие советы
Я сделал так же, как отметь, предлагаемые отдельными полями для каждой кнопки:
class Scr extends MainScreen {
EditField txt_Name;
ButtonField btnOK;
ButtonField btnCancel;
VerticalFieldManager v1;
VerticalFieldManager v2;
VerticalFieldManager v3;
Font font = Font.getDefault().derive(Font.BOLD, 20);
public Scr() {
txt_Name = new EditField(TextField.NO_NEWLINE) {
public void paint(net.rim.device.api.ui.Graphics g) {
g.setColor(Color.MAROON);
super.paint(g);
}
};
txt_Name.setFont(font);
v1 = new VerticalFieldManager();
v1.add(txt_Name);
btnOK = new ButtonField("OK", ButtonField.CONSUME_CLICK);
btnOK.setChangeListener(
new FieldChangeListener(){
public void fieldChanged(Field field, int context) {
Dialog.inform("OK pressed");
}});
btnCancel = new ButtonField("Cancel", ButtonField.CONSUME_CLICK);
btnCancel.setChangeListener(
new FieldChangeListener(){
public void fieldChanged(Field field, int context) {
Dialog.inform("Cancel pressed");
}});
v2 = new VerticalFieldManager();
v2.add(btnOK);
v2.add(btnCancel);
LabelField l1 = new LabelField("Hello Moon", Field.FOCUSABLE);
LabelField l2 = new LabelField("Hello Citizen", Field.FOCUSABLE);
LabelField l3 = new LabelField("Hello People", Field.FOCUSABLE);
LabelField l4 = new LabelField("Hello world", Field.FOCUSABLE);
v3 = new VerticalFieldManager();
v3.add(l1);
v3.add(l2);
v3.add(l3);
v3.add(l4);
add(v1);
add(v2);
add(v3);
}
}
Теперь, кажется, в порядке:
Alt Text http://img40.imageshack.us/img40/6472/textededed.jpg. Alt Text http://img59.imageshack.us/img59/7574/iMg59/7574/okpressed.jpg. Alt Text http://img641.imageshack.us/img641/9246/canceLessed01.jpg.
ОБНОВИТЬ
Swati Я могу щелкнуть эти кнопки со штормом симулятором с помощью щелчка мыши. Я не могу найти какое-либо другое объяснение, чем файл COD в симуляторе из старой версии. Вы можете быстро проверить его, изменив любой текст на этикетке в код, а затем развернуть и проверять, будет ли это изменение будет применено в приложении на устройстве. Если нет, это старая версия, и вы должны почистить симулятор и развернуть приложение еще раз.
Надеюсь, что это поможет вам!
Смотрите также BlackBerry - изменения не отражаются в моем приложении
Вы можете управлять фофонным порядком путем переопределения метода «навигационногоМоска» на экране или менеджере, содержащем фокусируемые поля, такие как кнопки «Хорошо» и «Отмена». Просто оцените аргументы, переданные в этот метод, установите фокус на желаемом поле с использованием поля. SETFOCUS () и верните true.
Что касается фокуса, не движущегося вперед с прокруткой - это просто так, как работает сенсорный экран. Фокус движется только при прикосновении к фокусируемому полю - поэтому, если вы не касаетесь никаких фокусируемых полей, когда вы «Flick» экран, чтобы прокрутить, фокус не изменится.