Недопустимое исключение состояния при подключении к URL в BrowserField - PullRequest
0 голосов
/ 16 марта 2011

Я написал некоторый код для подключения к URL-адресу в BrowserField.В процессе его показывает незаконное государственное исключение.Если я нажимаю «Продолжить», то он подключается.Я не понимаю, в чем проблема.

Вот код, который я использую:

class MoreBrowserScreen extends MainScreen
{
    String email;
    public MoreBrowserScreen(String email)
    {
        this.email=email;
        setTitle(HeaderManager.tabsManager());
        HeaderManager.more.setFocus();
        TabsManager(Paths.HOME,Paths.ALERTS,Paths.COLL,Paths.APP,Paths.FMORE).getTabs();

        BrowserField myBrowserField = new BrowserField();
        add(myBrowserField);

        myBrowserField.requestContent(email);
    }
    protected void makeMenu(Menu menu, int instance)
    {
        MenuItemClass mic = new MenuItemClass();
        menu.add(mic.getExitItem(0, 0));
    }

Ответы [ 2 ]

1 голос
/ 16 марта 2011

Привет, у меня возникла та же проблема, сначала вам нужно использовать invokelater, потому что вы находитесь в потоке событий, и по какой-то таинственной причине также установите фокус на браузер, вот что решило мою проблему:

 private void buttonClicked() {
  UiApplication.getUiApplication().invokeLater(new Runnable() {         
    public void run() {      
        browser.setFocus();
        browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true");
    }
});
0 голосов
/ 05 апреля 2011

Я тоже тянул за это волосы.Я попробовал browser.setFocus (), и это сработало частично.Тогда я понимаю, что есть другая проблема.Некоторые веб-сайты выполняют автоматическое перенаправление, в результате чего BrowserField обновляется и снова выдает ошибку.Итак, вот решение, которое решит проблему раз и навсегда.Сначала объявите browserField как члена класса.

private BrowserField browserField;

Затем, когда вы создаете экземпляр BrowserField, выполните следующие действия.

    browserField = new BrowserField();
    ProtocolController eventsProtocolController = new ProtocolController(browserField) {
        public void handleNavigationRequest(BrowserFieldRequest request) throws Exception {
            browserField.setFocus();
            super.handleNavigationRequest(request);
        }
    };
    browserField.getConfig().setProperty(BrowserFieldConfig.CONTROLLER, eventsProtocolController);

Кажется, что эта проблема возникает, когда есть другие поля вваш экран, который может «украсть» фокус.Таким образом, приведенный выше код гарантирует, что любая навигация заставит фокус вернуться обратно к BrowserField.На мой взгляд, это проблема BrowserField, но вот моя работа.

вздох!Кажется, после тестирования этот обходной путь работает только для OS 6 .. но не для OS 5. Я не нашел никакого решения для OS 5.

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