Search code examples
multithreadingblackberrybrowserfield

Blackberry BrowserField handleNavigationRequest Blocking


When I try the code belowe it blocks the UI thread(I think) it loads a blank page. Can some one please tell me what is the correct way to implement handleNavigationRequest. I tried implementing it but when I tried to run I get an error that handleNavigationRequest must be an Interface.

heres the code

class BrowserFieldScreen extends MainScreen 
    {  
        public BrowserFieldScreen()

        {   
            BrowserFieldConfig browserFieldConfig = new BrowserFC();
            BrowserFieldListener browserFieldListener = new BrowserFL();                
            BrowserField browserField = new BrowserField(browserFieldConfig);
            browserField.addListener(browserFieldListener);         
            ProtocolController controller = new ProtocolController(browserField) {
                public void handleNavigationRequest(BrowserFieldRequest request) throws Exception {


                   }
                };
            browserField.getConfig().setProperty(BrowserFieldConfig.CONTROLLER, controller);
            browserField.requestContent("http://meul-online.com");
            super.add(browserField);
        }

Solution

  • The problem is you are requesting the page but not displaying it .

    try this

        /**
     * Handle navigation requests (e.g., link clicks)
     */
    public void handleNavigationRequest(final BrowserFieldRequest request) throws Exception {
        try {
            final InputConnection ic = handleResourceRequest(request);
            UiApplication.getUiApplication().invokeLater(new Runnable() {
    
                public void run() {
                    browserField.setFocus();
                    browserField.displayContent(ic, request.getURL());  
                }
            });
        } catch (Exception e) { 
            Log.Error(e, "handleNavigationRequest");
        }
    
    }