为什么documentUrl返回null

时间:2012-12-21 18:13:45

标签: java eclipse blackberry web

我正在为黑莓制作一个Web应用程序,我真的需要当前的URL

documentUrl的说明中,它说

  

此方法将返回此BrowserField实例的当前加载页面的URL

我的代码是:

_bf2.requestContent("google.com";);
add(_bf2);
Global.c = _bf2.getDocumentUrl();
Global.be=new BasicEditField("URL: "+Global.c,Global.c);
add(Global.be);

奇怪的是,www.google.com在BrowserField中加载,documentUrl返回null。

这是我目前的代码:

BrowserField _bf2 = new BrowserField();
MYBrowserFieldListener _listener = new MYBrowserFieldListener();
_bf2.requestContent("google.com";);
_bf2.addListener(_listener);
String url=_bf2.getDocumentUrl();
Global.be=new BasicEditField("URL: "+url,url);
add(Global.be);
add(_bf2); 

我把它改成了

final BrowserField _bf2 = new BrowserField();
_bf2.requestContent("google.com";);
//_bf2.addListener(listener);
Global.be=new BasicEditField("URL: "+Global.c,Global.c);
add(Global.be);
add(_bf2);
_bf2.addListener(new BrowserFieldListener(){
    public void documentLoaded(BrowserField _bf2, Document document) throws Exception {
        Global.c=_bf2.getDocumentUrl();
    }
});

但它仍然返回null。有人可以告诉我如何解决这个问题吗?提前致谢!

1 个答案:

答案 0 :(得分:1)

我会说Arhimed已经回答了你的问题。 HTTP请求是一个非常耗时的过程(从CPU的角度来看)并且将阻塞直到服务器响应。我怀疑RIM程序员已根据自己的建议编写了requestContent()方法,并在单独的线程上获取Web内容。因此,requestContent()将立即返回,当您调用getDocumentUrl()时,它仍然为null,因为此时fetch线程可能甚至没有连接到服务器。

您需要实现BrowserFieldListener并侦听documentLoaded()。