0

我正在开发一个应用程序,我需要在其中调用一些从黑莓本机到 javascript 的方法。

当我点击后退键事件时,我想触发onBackKeyDown()方法,该方法在 javascript 中声明。

主.java

protected boolean keyDown(int keycode, int time) {
    // TODO Auto-generated method stub

    if(Keypad.key(keycode) == Keypad.KEY_ESCAPE)
    {
           // onBackKeyDown(); 
         // i want to call the following method which is declared in main.js file 
        Dialog.alert("this is back button");        
        return true;

    }
    return super.keyDown(keycode, time);
}

main.js

 function onBackKeyDown() {
   try {
       if ($.mobile.activePage.is("#Page1")) {
         $.mobile.changePage("#page5");
        } else if ($.mobile.activePage.is("#page2")) {
           $.mobile.changePage("#main");
       } else if ($.mobile.activePage.is("#page3")) {
           $.mobile.changePage("#main");
       } else if ($.mobile.activePage.is("#main")) {
           navigator.app.exitApp();
       }
} catch(e) {
    alert("Exception:ConsoleLog.log:" + e);
}

}

正如我所知道的,通过使用"extendScriptEngine",在 javascript 中声明的方法在本机中调​​用。但是在这里如何根据我上面的代码调用本机的javascript方法......任何人都可以帮我解决这个问题......

4

1 回答 1

0

您没有显示此代码,但我必须假设您的应用程序有一些Screen包含某种浏览器字段,该字段正在显示 HTML 内容。

net.rim.device.api.browser.field2.BrowserField如果您的应用只需要支持 OS 5.0 及更高版本,我无法在没有看到该代码的情况下肯定地告诉您,但我建议您使用(浏览器字段 2)。

如果您必须支持低于 OS 5.0,我不知道该怎么做

无论如何,有了这个 5.0+ BrowserField,你可以这样做:

BrowserFieldConfig config = new BrowserFieldConfig();
config.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE);  // should be the default

// Browser basic initialization
BrowserField _browserField = new BrowserField(config);

接着

protected boolean keyDown(int keycode, int time)
{
    if(Keypad.key(keycode) == Keypad.KEY_ESCAPE)
    {
        // i want to call the following method which is declared in main.js file 
        _browserField.executeScript("onBackKeyDown()");
        Dialog.alert("this is back button");        
        return true;

    }
    return super.keyDown(keycode, time);
}
于 2012-07-25T21:06:55.937 回答