Blackberry Storm - проблема с фокусом на поле растрового изображения

на моем экране 3 менеджера h1 h2 bmpf = new BitmapField

добавлены в таком порядке, как

backgroundmanager.add(h1)
backgroundmanager.add(bmpf)
backgroundmanager.add(h2)

add(background manager);

protected boolesn navigationClick()
{
int index1 = h1.getFieldWithFocusIndex();
int index2 = h2.getFieldWithFocusIndex();
return true;
}

косить я получаю индекс фокуса всех фокусируемых полей в менеджерах h1 и h2

но я не могу получить индекс поля растрового изображения в фокусе, мне нужно выполнить какой-то код при его щелчке

что делать


person Swati    schedule 10.03.2010    source источник


Ответы (3)


Зачем вам нужен индекс BitmapField? Может, будет проще объявить BitmapField членом экрана? Если вам по-прежнему нужен индекс, вызовите getIndex () из поля.

class Scr extends MainScreen {
    BitmapField mBitmapField;

    protected boolean navigationClick(int status, int time) {
        int bmpIndex = mBitmapField.getManager.getFocusedIndex();
        return true;
    }
}

ОБНОВЛЕНИЕ. Другой полезный метод в классе Field - это getManager ():

class Scr extends MainScreen {
    BitmapField mBitmapField;

    protected boolean navigationClick(int status, int time) {
        int index = -1;
        Manager manager = mBitmapField.getManager();
        if (manager != null) {
             index = manager.getFieldWithFocusIndex();
        }
        return true;
    }
}
person Maksym Gontar    schedule 10.03.2010
comment
эй, я хочу найти индекс Bitmapfieldfield, когда он сфокусирован, то есть индекс фокуса coz при навигации щелкните я проверяю индекс фокуса n соответственно запускаю код - person Swati; 10.03.2010
comment
Макс, он всегда показывает index = (-1), я также пробовал настраиваемое поле wid, но такое же (-1) - person Swati; 10.03.2010
comment
почему бы вам просто не протестировать mBitmapField.isFocus ()? - person Maksym Gontar; 10.03.2010
comment
Вы создали это BitmapField в стиле FOCUSABLE? - person Maksym Gontar; 10.03.2010
comment
хорошо, я работаю со штормом mBitmapField.isFocus () также не работает n растровое поле также сфокусировано, что делать - person Swati; 11.03.2010
comment
как насчет реализации BitmapButtonField? stackoverflow.com/questions/ 1445953 / - person Maksym Gontar; 11.03.2010

ну, я установил размер поля растрового изображения и поместил поле растрового изображения в горизонтальный диспетчер полей, и он сработал

in

class myscreen extends MainScreen
 {
    BitmapField mBitmapField;

    hm = new HorizontalFieldManager();
    hm.add(mBitmapField)

    protected boolean navigationClick(int status, int time)
   {       
        if (hm.getFieldWithFocusIndex==0) 
        {
             Dialog.inform("Image focussed");
        }
        return true;
    }
}

я не понимаю, почему раньше такая же логика не работала !!!!!!!!!!

может быть bcoz размера BitmapField

person Swati    schedule 12.03.2010

Попробуйте переопределить встроенные методы bitmapField navigationClick и drawFocus, чтобы вам не нужно было заботиться об индексе, когда пользователь щелкает растровое изображение, ваш код будет запущен.


protected void drawFocus(Graphics graphics, boolean on){
    //the simplies way to draw a rectangle and this will be the focus
}

protected boolean navigationClick(int status, int time) { //write here your code what you want to run the user clicks to the bitmap return true; }

person Alex    schedule 12.03.2010