Blackberry: дочерний элемент VerticalFieldManager не получает фокус - PullRequest
0 голосов
/ 12 августа 2011

У меня есть VerticalFieldManger, который используется в качестве контейнера для отображения пользовательской ленты новостей.По идее изображение (BitmapField) и заголовок (LabelField) помещаются в VerticalFieldManager.

. У меня есть подклассы VerticalFieldManager для некоторых простых пользовательских элементов и их свойств, но у меня естьне отменять никакие методы, объявленные в VerticalFieldManager.

. Я бы хотел, чтобы BitmapField отвечал на сенсорные события и щелчки навигации, чтобы открыть веб-браузер для отображения нужной веб-страницы.Проблема в том, что VerticalFieldManager не получает фокус (я этого не ожидал), и ни один из дочерних элементов не получает фокус.

Я не вложил ни в подкласс BitmapField, ни в LabelField

Конструктор для моего подкласса VerticalFieldManager:

public NewsManagerView( boolean _isClickable, long _style ) {
    super( _style );

    this.setIsClickable( _isClickable );    // sets flag if this should respond to click events

    this.init();    // initialize ivars

    this.add( this.getTitle() );    // add child fields
    this.add( this.getImgFld() );
    this.add( this.getUrl() );
}

, который создается следующим образом:

this.setNewsManager( new NewsManagerView(this.getIsConnected(), Field.USE_ALL_WIDTH) );

Ответы [ 2 ]

1 голос
/ 09 января 2012
VerticalFieldManager datavfm=new VerticalFieldManager(FOCUSABLE)
{
    protected void paintBackground(Graphics graphics) 
    {
        if(!isFocus())
        {
            graphics.setColor( 0xDDDDDD );
            graphics.fillRoundRect( 0, 0, 318, 30, 18, 18);
            graphics.setColor( 0x000000 );
            graphics.drawRoundRect( 0, 0, 318, 30, 18, 18);
            invalidate();
        }
        else
        {
            graphics.setColor( 0x005DE7 );
            graphics.fillRoundRect( 0, 0, 318, 30, 18, 18);
            graphics.setColor( 0xFFFFFF );
            graphics.drawRoundRect( 0, 0, 318, 30, 18, 18);
            graphics.setColor( 0xFFFFFF );
            invalidate();
        }
    }
    protected void sublayout(int maxWidth,int maxHeight)
    {
        super.sublayout(318, 30);
        super.setExtent(318, 30);
    }
    protected boolean navigationClick(int status,int time)
    {
        GetPNRStatus(strPNRNumber);
        return true;
    }
    protected boolean keyChar(char c, int status, int time)
    {
        if (c == Characters.ENTER)
        {
            GetPNRStatus(strPNRNumber);
        }
        return true;
    }
};
1 голос
/ 12 августа 2011

Это известная проблема.Я начал тему на форуме поддержки BB http://supportforums.blackberry.com/t5/Java-Development/Scroll-happening-but-Vertical-Field-Manager-Not-Moving/m-p/1214481

И был дан ответ http://supportforums.blackberry.com/t5/Java-Development/My-scrollable-manager-is-not-scrolling/ta-p/445247

Извините, это не реальный ответ, а единственный доступный на данный момент обходной путь

РЕДАКТИРОВАТЬ: На форуме BB добавлено новое сообщение:

Друг дал мне решение ... вы можете поместить своего менеджера в горизонтальный менеджер итогда вы можете просто добавить нулевое поле с фокусируемым поведением, это сделает трюк

Вы можете попробовать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...