我正在尝试从我的 Javascript 代码中调用 Java 方法。这适用于使用 Phonegap 的 Windows Phone 7 应用程序。
我的javascript代码中有以下内容。
document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown(){
}
在我的 Java 代码中,我有以下内容。
public static native void exportStaticMethod() /*-{
$wnd.onBackKeyDown =
$entry(this.@com.mycompany.myapp.client.MyApp::hideSettingsWidgets());
}-*/;
然后在 onModuleLoad() 我这样称呼它:
MyApp.exportStaticMethod();
它不起作用我有一个警报,hideSettingsWidgets()
但它从来没有显示出来。
*编辑* 这是更多代码。Javascript 中未添加 EventListener。它是专门与 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();
}
它似乎确实添加了您内部的 EventListener
public native void setupJavaHandler() /*-{
var app = this;
var onBackKeyDown = $entry(function() {
app.@com.mycompany.myapp.client.MyApp::hideSettingsWidgets();
});
$doc.addEventListener("backbutton", onBackKeyDown, false);
}-*/;
所以我不确定我哪里出错了。我没有添加您提到的 ArrayList<> 因为不确定,并且加载页面时事件侦听器没有运行。
似乎showSettingsWidgets()
永远不会运行