我写了一些代码来连接到BrowserField中的URL。在此过程中,它显示了非法国家例外。如果我单击继续,则连接。我不明白是什么问题。
以下是我正在使用的代码:
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));
}
答案 0 :(得分:1)
嗨,我遇到了同样的问题, 首先你需要使用invokelater,因为你在事件线程中,并且由于一些神秘的原因也将焦点设置为浏览器, 这就解决了我的问题:
private void buttonClicked() {
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
browser.setFocus();
browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true");
}
});
答案 1 :(得分:0)
我也一直在拉这个头发。我尝试了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的解决方案。