keyone - blackberry modelos
Excepción de estado ilegal al conectarse a URL en BrowserField (2)
Escribí un código para conectarme a una URL en un BrowserField. En el proceso, muestra la excepción de estado ilegal. Si hago clic en Continuar, entonces se conecta. No entiendo cuál es el problema.
Aquí está el código que estoy usando:
class MoreBrowserScreen extends MainScreen
{
String email;
public MoreBrowserScreen(String email)
{
this.email=email;
setTitle(HeaderManager.tabsManager());
HeaderManager.more.setFocus();
TabsManager(Paths.HOME,Paths.ALERTS,Paths.COLL,Paths.APP,Paths.FMORE).getTabs();
BrowserField myBrowserField = new BrowserField();
add(myBrowserField);
myBrowserField.requestContent(email);
}
protected void makeMenu(Menu menu, int instance)
{
MenuItemClass mic = new MenuItemClass();
menu.add(mic.getExitItem(0, 0));
}
Hola, estaba teniendo el mismo problema, primero necesitas usar invokelater porque estás en el hilo del evento, y por alguna razón misteriosa también estableces el foco en el navegador, esto es lo que resolvió mi problema:
private void buttonClicked() {
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
browser.setFocus();
browser.requestContent("http://www.blackberry.com/developers" + ";deviceside=true");
}
});
También he estado tirando de mi cabello en este. Probé el browser.setFocus () y funcionó parcialmente. Entonces me doy cuenta de que hay otro problema. Algunos sitios web realizan una redirección automática que causa que BrowserField se actualice y genere el error nuevamente. Así que aquí está la solución que resolverá el problema de una vez por todas. Primero declare el browserField como miembro de la clase.
private BrowserField browserField;
Luego, cuando instales tu BrowserField, haz lo siguiente.
browserField = new BrowserField();
ProtocolController eventsProtocolController = new ProtocolController(browserField) {
public void handleNavigationRequest(BrowserFieldRequest request) throws Exception {
browserField.setFocus();
super.handleNavigationRequest(request);
}
};
browserField.getConfig().setProperty(BrowserFieldConfig.CONTROLLER, eventsProtocolController);
Parece que este problema ocurre cuando hay otros campos en la pantalla que pueden "robar" el foco. Por lo tanto, el código anterior asegurará que cualquier navegación forzará el foco de regreso a BrowserField. En mi opinión, es un problema con BrowserField, pero aquí está mi trabajo.
¡suspiro! Parece que después de la prueba, esta solución funciona solo para OS 6 ... pero no para OS 5. Todavía no he encontrado ninguna solución para OS 5.