2012-12-21 277 views
0

我正在做一個Web應用程序的黑莓,我真的需要當前的URL爲什麼documentUrl返回NULL

documentUrl的描述,它說

此方法將返回的網址這BrowserField實例

我的代碼當前加載的頁面是:

_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

String l = browserField.getDocumentUrl; – user1905507

+0

當我在文本字段上打印時,這行代碼返回null。有人可以告訴我如何解決這個問題,以便我獲得當前的URL? – user1905507

+1

API說:「如果沒有頁面被加載,這個方法將返回null」。所以唯一的猜測是你調用'getDocumentUrl()'的時候你還沒有加載頁面(完全或完全)。那麼,爲什麼你不發佈整個代碼呢? –

回答

1

我會說阿哈邁德回答了你的問題。一個HTTP請求是一個非常耗時的過程(從CPU的角度來看),並會阻塞,直到服務器響應。我懷疑RIM程序員根據自己的建議對requestContent()方法進行了編碼,並在單獨的線程中獲取Web內容。所以,requestContent()將會立即返回,當你調用getDocumentUrl()時,它仍然是空的,因爲在這一點上獲取線程可能甚至沒有連接到服務器。

您將需要實現BrowserFieldListener並偵聽documentLoaded()。

+0

這是我當前的代碼:\t BrowserField _bf2 = new BrowserField(); \t MYBrowserFieldListener _listener = new MYBrowserFieldListener(); \t _bf2.requestContent(「http://www.google.com」); \t _bf2.addListener(_listener); \t String url = _bf2.getDocumentUrl(); \t Global.be = new BasicEditField(「URL:」+ url,url); \t add(Global.be); \t add(_bf2); – user1905507

+0

我使用MyBrowserField類從http://supportforums.blackberry.com/t5/Java-Development/BrowserField-Sample-Code-Using-the-BrowserFieldListener-class/ta-p/496213 – user1905507

+0

而我仍然得到空值來自getDocumentUrl。有人請幫助我! – user1905507