BlackBerry BrowserField IllegalStateException - PullRequest
0 голосов
/ 11 марта 2011

Я пытаюсь реализовать простое взаимодействие с пользователем с field2.BrowserField: при нажатии кнопки BrowserField загружает другую страницу, но я получаю IllegalStateException.

вот мой код:

public class BrowserScreen extends MainScreen {
  private BrowserField browser;

  public BrowserScreen() {
      super();
      setTitle("Browser State example");

      ButtonField btn1 = new ButtonField("test1");
      btn1.setChangeListener(new FieldChangeListener() {

        public void fieldChanged(Field field, int context) {
            test1();                
        }
      });
      add(btn1);
      ButtonField btn2 = new ButtonField("test2");
      btn2.setChangeListener(new FieldChangeListener() {

        public void fieldChanged(Field field, int context) {
            test2();                
        }
      });
      add(btn2);

      browser = new BrowserField();
      add(browser);
      browser.requestContent("http://stackoverflow.com/" + ";deviceside=true;");
  }

  private void test1() {
      UiApplication.getUiApplication().invokeLater(new Runnable() {         
        public void run() {             
            browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true");
        }
    });

  }

  private void test2() {
      synchronized (Application.getEventLock())
        {
         browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true");
        }
  }

}

Ответы [ 2 ]

0 голосов
/ 14 марта 2011

Wow, добавление browser.setFocus ();сделать трюк

public class BrowserScreen extends MainScreen {
  private BrowserField browser;

  public BrowserScreen() {
      super();
      setTitle("Browser State example");

      ButtonField btn1 = new ButtonField("test1", ButtonField.CONSUME_CLICK);
      btn1.setChangeListener(new FieldChangeListener() {

        public void fieldChanged(Field field, int context) {
            test1();                
        }
      });
      add(btn1);

      browser = new BrowserField();
      add(browser);
      browser.requestContent("http://stackoverflow.com/" + ";deviceside=true;");
  }

  private void test1() {
      UiApplication.getUiApplication().invokeLater(new Runnable() {         
        public void run() {      
            browser.setFocus();
            browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true");
        }
    });

  }

}

0 голосов
/ 13 марта 2011

Попробуйте это:

public class BrowserScreen extends MainScreen {
  private BrowserField browser;

  public BrowserScreen() {
      super();
      setTitle("Browser State example");

  ButtonField btn1 = new ButtonField("test1");
  btn1.setChangeListener(new FieldChangeListener() {

    public void fieldChanged(Field field, int context) {
        //test1();
        test1("http://www.blackberry.com/developers");
    }
  });
  add(btn1);
  ButtonField btn2 = new ButtonField("test2");
  btn2.setChangeListener(new FieldChangeListener() {

    public void fieldChanged(Field field, int context) {
        //test2();
        test1("http://www.blackberry.com/developers");
    }
  });
  add(btn2);

  browser = new BrowserField();
  add(browser);

  //browser.requestContent("http://stackoverflow.com/" + ";deviceside=true;");
  test1("http://stackoverflow.com/");
}

  private void test1(final String url) {
      UiApplication.getUiApplication().invokeLater(new Runnable() {         
        public void run() {     
            //browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true");
            browser.requestContent(url + ";deviceside=true");
        }
    });

  }

//  private void test2() {
//      synchronized (Application.getEventLock())
//        {
//         browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true");
//        }
//  }
}
...