2012-07-31 22 views
0

在我的应用程序中,我有一个登录屏幕。当用户输入正确的用户名和密码时,我必须从网站收集信息并导航到主屏幕。如何在BrowserField中加载文档时推送新屏幕?

我试过下面的代码。但是这个代码不起作用。如何实现它?

public final class MyScreen extends MainScreen { 
    public MyScreen() { 
     BrowserFieldConfig myBrowserFieldConfig = new BrowserFieldConfig(); 
     myBrowserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE, 
     BrowserFieldConfig.NAVIGATION_MODE_POINTER); 
     BrowserField browserField = new BrowserField(myBrowserFieldConfig); 

     BrowserFieldListener list = new BrowserFieldListener() { 
      public void documentLoaded(BrowserField browserField, Document document) throws Exception { 
       String url = document.getBaseURI(); 
       String val = "http://demo....."; 
       //i am checking the correct url and i will navigate to main screen 
       if (url.equals(new String(val))) { 
        UiApplication.getUiApplication().pushScreen(new Main());//here i got IllegalStateException .. 
       } 
       System.out.println(" Login URL " + url); 
       //super.documentLoaded(browserField, document); 
      } 
     }; 

     browserField.addListener(list); 
     add(browserField); 
     String URL = "http://demo....."; 
     if (DeviceInfo.isSimulator()) { 
      URL = URL + ";deviceSide=true"; 
     } 
     browserField.requestContent(URL); 
    } 
} 
+0

'This is not working.' - 你的代码出了什么问题?写下你的经验,当你运行这个代码。您可以在“documentLoaded”方法的第一行设置一个断点来进行调试。 – Rupak 2012-07-31 14:54:55

+0

谢谢你的表扬。我得到了IllegalArgumentException – prakash 2012-07-31 15:10:37

+0

我怎样才能推到新的屏幕? – prakash 2012-07-31 15:11:15

回答

1

代替

UiApplication.getUiApplication().pushScreen(new Main()); 

使用

UiApplication.getUiApplication().invokeLater(new Runnable() 
       { 
        public void run() 
        { 
         UiApplication.getUiApplication().pushScreen(new Main()); 
        } 
       }); 

你需要做的是在UI线程。 检查它。

+0

很酷...它工作.. – prakash 2012-08-01 04:57:21