2011-03-11 67 views
0

我試圖實現簡單的用戶與field2.BrowserField的交互:當按鈕被點擊BrowserField加載 另一頁,但我得到IllegalStateException。BlackBerry BrowserField IllegalStateException

這裏是我的代碼:

public class BrowserScreen extends MainScreen { 
    private BrowserField browser; 

    public BrowserScreen() { 
     super(); 
     setTitle("Browser State example"); 

     ButtonField btn1 = new ButtonField("test1"); 
     btn1.setChangeListener(new FieldChangeListener() { 

     public void fieldChanged(Field field, int context) { 
      test1();     
     } 
     }); 
     add(btn1); 
     ButtonField btn2 = new ButtonField("test2"); 
     btn2.setChangeListener(new FieldChangeListener() { 

     public void fieldChanged(Field field, int context) { 
      test2();     
     } 
     }); 
     add(btn2); 

     browser = new BrowserField(); 
     add(browser); 
     browser.requestContent("http://stackoverflow.com/" + ";deviceside=true;"); 
    } 

    private void test1() { 
     UiApplication.getUiApplication().invokeLater(new Runnable() {   
     public void run() {    
      browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true"); 
     } 
    }); 

    } 

    private void test2() { 
     synchronized (Application.getEventLock()) 
     { 
     browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true"); 
     } 
    } 

}

回答

0

哇,加入browser.setFocus();這樣的伎倆

public class BrowserScreen extends MainScreen { 
    private BrowserField browser; 

    public BrowserScreen() { 
     super(); 
     setTitle("Browser State example"); 

     ButtonField btn1 = new ButtonField("test1", ButtonField.CONSUME_CLICK); 
     btn1.setChangeListener(new FieldChangeListener() { 

     public void fieldChanged(Field field, int context) { 
      test1();     
     } 
     }); 
     add(btn1); 

     browser = new BrowserField(); 
     add(browser); 
     browser.requestContent("http://stackoverflow.com/" + ";deviceside=true;"); 
    } 

    private void test1() { 
     UiApplication.getUiApplication().invokeLater(new Runnable() {   
     public void run() {  
      browser.setFocus(); 
      browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true"); 
     } 
    }); 

    } 

}

0

試試這個:

public class BrowserScreen extends MainScreen { 
    private BrowserField browser; 

    public BrowserScreen() { 
     super(); 
     setTitle("Browser State example"); 

    ButtonField btn1 = new ButtonField("test1"); 
    btn1.setChangeListener(new FieldChangeListener() { 

    public void fieldChanged(Field field, int context) { 
     //test1(); 
     test1("http://www.blackberry.com/developers"); 
    } 
    }); 
    add(btn1); 
    ButtonField btn2 = new ButtonField("test2"); 
    btn2.setChangeListener(new FieldChangeListener() { 

    public void fieldChanged(Field field, int context) { 
     //test2(); 
     test1("http://www.blackberry.com/developers"); 
    } 
    }); 
    add(btn2); 

    browser = new BrowserField(); 
    add(browser); 

    //browser.requestContent("http://stackoverflow.com/" + ";deviceside=true;"); 
    test1("http://stackoverflow.com/"); 
} 

    private void test1(final String url) { 
     UiApplication.getUiApplication().invokeLater(new Runnable() {   
     public void run() {  
      //browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true"); 
      browser.requestContent(url + ";deviceside=true"); 
     } 
    }); 

    } 

// private void test2() { 
//  synchronized (Application.getEventLock()) 
//  { 
//   browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true"); 
//  } 
// } 
} 
+0

仍然得到越來越IllegalStateException異常 – Janci 2011-03-14 09:36:17

相關問題