Щелчок BitmapField не работает в приложении Blackberry - PullRequest
3 голосов
/ 06 июня 2011

Я расположил 7 bimapfield по горизонтали, если я щелкнул по полю растрового изображения, которое нужно нажать на другой экран. Вот мой код, но я не получил другой экран, может ли кто-нибудь помочь мне, что не так в этом коде

BitmapField bitmap1 = new BitmapField(
    Bitmap.getBitmapResource("profile_n.png"),FOCUSABLE | DrawStyle.HCENTER)
{
    protected void onFocus(int direction)
    {
        rollno=1;
        this.getScreen().invalidate();
    }
    protected void onUnfocus()
    {

    }   
    protected boolean navigationClick(int status, int time){
           UiApplication.getUiApplication().popScreen(getScreen());
            UiApplication.getUiApplication().pushScreen(new AccMainScreen());
        return true;
    }
};

1 Ответ

3 голосов
/ 06 июня 2011

Вы можете использовать настраиваемое поле, которое содержит изображение и ведет себя как кнопка вместо битового поля.Вот код, который я предлагаю:

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.Graphics;
public class CustomButton extends Field{

    protected Bitmap icon;
    protected int fieldWidth;
    protected int fieldHeight;

    public CustomButton (String iconSource,long style) {
        super(style);
        icon = Bitmap.getBitmapResource(iconSource);
        fieldHeight = icon.getHeight();
        fieldWidth = icon.getWidth();
    }

    public int getPreferredWidth() {
        return fieldWidth;
    }

    public int getPreferredHeight() {
        return fieldHeight;
    }
    protected void layout(int arg0, int arg1) {
        setExtent(getPreferredWidth(), getPreferredHeight());
    }
    protected void drawFocus(Graphics graphics, boolean on){ }

    protected void paint(Graphics graphics) {
        graphics.fillRect(0, 0, fieldWidth, fieldHeight);
        graphics.drawBitmap(0,0, fieldWidth, fieldHeight, icon, 0, 0);
    }
    protected boolean navigationClick(int status, int time) {
        fieldChangeNotify(0);
        return true;
    }
}

Вы можете использовать эту кнопку как кнопку по умолчанию и изменить ее слушатель с помощью функции setChangeListener.

CustomButton aButton = new CustomButton ("graphics/someIcon.png");
aButton.setChangeListener(new FieldChangeListener() {
    public void fieldChanged(Field field, int context) {
        UiApplication.getUiApplication().popScreen(getScreen());
        UiApplication.getUiApplication().pushScreen(new AccMainScreen());   
    }
});
...