2010-01-26 62 views
0

我想添加一个浏览器字段到我的主屏幕上。目前,我有:黑莓使用UIApplication与MainScreen

public class BrowserFieldDemo extends UiApplication { 

private MainScreen _browserScreen; 
private BrowserField _bf2; 
private BrowserFieldConfig _bfConfig; 

public BrowserFieldDemo(final String url) { 
    _browserScreen = new MainScreen(); 
    _bfConfig = new BrowserFieldConfig(); 
    _bfConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE, 
      BrowserFieldConfig.NAVIGATION_MODE_POINTER); 
    _bfConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED, 
      Boolean.TRUE); 
    _bf2 = new BrowserField(_bfConfig); 
    _browserScreen.add(_bf2); 

    invokeLater(new Runnable() { 
     public void run() { 
      _bf2.requestContent(url); 
      pushScreen(_browserScreen); 
     } 
    }); 
} 
} 

什么是浏览器插入到进入主屏幕类的正确方法,其中包括UI元素?例如,添加(myBrowserField)?我不确定如何建立BrowserFieldDemo类要做到这一点,因为我需要延长的UIApplication为主题...

public class LoginScreen extends MainScreen implements FieldChangeListener{} 

谢谢!


更新:

我现在有以下几点:

public class LoginBrowserField extends Thread { 

    private LoginScreen loginScreen; 
    private String url; 

    public LoginBrowserField(String url, LoginScreen loginScreen) { 
     this.loginScreen = loginScreen; 
     this.url = url; 
    } 

    public void run() { 
     synchronized (UiApplication.getEventLock()) { 
     loginScreen.changeURL(url); 
     } 
    } 
} 

public class LoginScreen extends MainScreen implements FieldChangeListener { 

    public void changeURL(final String url) { 
     _bf2.requestContent(url); 
     _bf2.setFocus(); 
    } 

} 

并启动浏览器,我打电话(在LoginScreen):

LoginBrowserField browser = new LoginBrowserField(url, this); 
browser.start(); 

不过,我不知道我上面的设置是否正确,因为浏览器在应用程序中花费很长时间,并且它没有t正确解析我的网址。你能看到什么是错的吗?

谢谢!

回答

2

如果您需要在后台运行代码的新线程(即通过HTTP加载数据),您可以创建一个新的Thread对象并启动()它 - 不需要为此设置子类UiApplication。

在另一方面,如果你需要安排一些代码在事件处理线程(如pushScreen),你可以使用UiApplication.getUiApplication()得到的UIApplication的实例,例如运行:

UiApplication.getUiApplication().invokeLater(new Runnable() { 
    public void run() { 
     pushScreen(_browserScreen); 
    } 
}); 
+0

感谢您的帮助,Marc!我上面更新了我的帖子,你可以检查一下吗?我做了你的建议,但我不确定是否正确实施,因为浏览器错误地解决了页面,速度很慢......谢谢! – littleK 2010-01-27 00:15:14

+0

您可能想要查看RIM开发人员工具附带的示例应用程序中的Browser Field Demo。它演示了如何使用该字段以及如何设置资源获取线程。 – 2010-01-27 18:25:39

+0

我以这种方式工作,它的工作 谢谢!!!!!!!!!!!! – Swati 2010-01-30 12:12:03