我想從我的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