BlackBerry BrowserField IllegalStateException

时间:2011-03-11 13:06:38

标签: blackberry browserfield illegalstateexception

我正在尝试使用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 :(得分:0)

试试这个:

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");
//        }
//  }
}

答案 1 :(得分:0)

哇,添加了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");
        }
    });

  }

}