我正在为黑莓制作一个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。有人可以告诉我如何解决这个问题吗?提前致谢!
答案 0 :(得分:1)
我会说Arhimed已经回答了你的问题。 HTTP请求是一个非常耗时的过程(从CPU的角度来看)并且将阻塞直到服务器响应。我怀疑RIM程序员已根据自己的建议编写了requestContent()方法,并在单独的线程上获取Web内容。因此,requestContent()将立即返回,当您调用getDocumentUrl()时,它仍然为null,因为此时fetch线程可能甚至没有连接到服务器。
您需要实现BrowserFieldListener并侦听documentLoaded()。