我想从我的Javascript代码调用Java方法。这是使用Phonegap的Windows Phone 7应用程序。GWT JSNI JavaScript到Java不工作
我在我的JavaScript代码中有以下内容。
document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown(){
}
而在我的Java代码中,我有以下几点。
public static native void exportStaticMethod() /*-{
$wnd.onBackKeyDown =
$entry([email protected]::hideSettingsWidgets());
}-*/;
然后在上onModuleLoad()我调用它像这样:
MyApp.exportStaticMethod();
它不工作,我在hideSettingsWidgets()
的警报,但它从来没有得到显示。
* 编辑 * 下面是一些更多的代码。 EventListener不会在Javascript中添加。它专门添加了Java代码。我无法让听众原本注册,所以这是我添加的内容。
public static native void removeBackListener() /*-{
$wnd.removeTheListener();
}-*/;
而且在我的JavaScript
function removeTheListener(){
document.removeEventListener("backbutton", onBackKeyDown, false);
}
这是我的呼吁hideSettingsWidgets()
public void hideSettingsWidgets(){
for(int i=0;i<settingsScreenWidgets.length;i++){
settingsScreenWidgets[i].setVisible(false);
}
alertString("Working");
removeBackListener();
}
而且我给你打电话给我里面showSettingsWidgets()
p
方法rivate void showSettingsWidgets(){
for(int i=0;i<settingsScreenWidgets.length;i++){
settingsScreenWidgets[i].setVisible(true);
}
setCurrentImage();
setOnOffImage();
setupJavaHandler();
}
它似乎被添加事件侦听就是里面你
public native void setupJavaHandler() /*-{
var app = this;
var onBackKeyDown = $entry(function() {
[email protected]::hideSettingsWidgets();
});
$doc.addEventListener("backbutton", onBackKeyDown, false);
}-*/;
所以我不知道我要去的地方错了。我没有添加您提到的ArrayList <>因为不确定,并且页面被加载时Event Listener未运行。
好像showSettingsWidgets()
永远不会被运行
嗨。当页面加载时,addEventListener代码不会被添加或运行,而是专门添加到java代码中。我也通过调用一个javascript函数来删除它。我已经在上面添加了我的相关代码。谢谢您的帮助。 – james 2012-03-31 02:04:07
也只是为了确保我仍然需要托管的HTML页面中的空onBackKeyDown函数? – james 2012-03-31 03:46:45
它必须是正确的。我下载了GWT Phonegap,它也在做同样的事情。如果手机上的IE浏览器完全不支持JSNI,我不会感到惊讶。 – james 2012-03-31 04:41:24