ButtonField не отображается в HorizontalFieldManager

Я добавил buttonField в приложение HorizontalFieldManager в Blackberry. Я добавил его после добавления EditField. Тем не менее, buttonField не появляется. Ниже мой код

HorizontalFieldManager hfm = new HorizontlFieldManager(); 
    BasicEditField edit = new BasicEditField("Label", "UP");
    ButtonField button = new ButtonField("Search");
    hfm.add(edit);
    hfm.add(button);
    add(hfm);

4 ответа

Решение

Этот ответ не решит вашу проблему, но важно отметить, что ваш код абсолютно в порядке, и в этом нет ничего плохого.

HorizontalFieldManager Класс полон ошибок, появившихся в OS 5.0, и на сегодняшний день (последняя версия - 7.x) RIM не собирается исправлять ошибки.

В качестве примера, вот проблема с ошибкой в BB Developer Issue Tracker и до сих пор не решена. Я имел дело с hfm в своем последнем проекте, а также столкнулся с проблемами, которые мне пришлось обойти, создав своего собственного менеджера, аналогично тому, как показывает ответ Шашанка. Вы можете найти больше примеров по созданию собственного менеджера в SO. Также здесь освещены основы.

В настоящее время это единственное решение, так как RIM переходит на BB 10 (C++), и они сбрасывают API Java, поэтому не ожидайте, что они исправят это в ближайшее время. Даже если бы они были, это не будет исправлено, но в последней версии ОС, которая бесполезна, так как устройства BB редко обновляются.

Вам нужно установить ширину поля редактирования и ширину кнопки

protected void layout(int width,int height)
{
super.layout(Display.getWidth() * 3 /4  , getpreferedHeight());
super.setExtent(Display.getWidth() * 3/4    , getpreferedHeight());
}

Для использования кнопки

protected void layout(int width,int height)
{
super.layout(Display.getWidth() /4  , getpreferedHeight());
super.setExtent(Display.getWidth() /4   , getpreferedHeight());
}

Я думаю, что Шашанк был в основном на правильном пути, но для более полного примера того, как изменить ButtonField ширина, я бы порекомендовал посмотреть на этот ответ.

Возьмите VerticalFieldManager вместо HorizantalFieldManager

Другие вопросы по тегам