之前我问了一个类似的问题,但我希望得到更多的信息,以及我从上一个问题中学到的东西,我可以解决我的问题。 我需要能够使用Android手机上的后退按钮。目前我实施了Cordova后退按钮,导致应用程序每次点击返回2页。
我还应该提一下,我的应用程序是围绕JavaScript,HTML和CSS构建的,只需要很少的Java,如下所示。
Backbutton JS代码:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
//alert ('123');
document.addEventListener('backbutton', onBackKeyDown, false);
}
function onBackKeyDown()
{
currentPage = $.mobile.activePage.attr('id');
if(currentPage == "createUser"){
$.mobile.changePage("#logIn");
alert("Return To Login Page");
}
if(currentPage == "cardDetails"){
$.mobile.changePage("#createUser");
alert("Return to Create User");
}
if(currentPage == "mainMenu"){
$.mobile.changePage("#logIn");
alert("Return To Log In");
}
if(currentPage == "locationPage"){
$.mobile.changePage("#mainMenu");
alert("Return To Main Menu");
$("#pId").empty();
}
if(currentPage == "editUserPage")
{
$.mobile.changePage("#mainMenu");
alert("Return To Main Menu");
$("#trId").empty();
}
if(currentPage == "editCardDetailsPage")
{
$.mobile.changePage("#editUserPage");
alert("Return To Edit User");
}
}
我被告知在我的java文件中实现onBackPressed函数。我在Java方面不是很有经验,但在一些帮助下我能够找出代码的位置
Java代码:
import android.os.Bundle;
import org.apache.cordova.DroidGap;
public class FnBApp extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
super.loadUrl("file:///android_asset/www/index.html");
}
@Override
public void onBackPressed() {
//Log.d("CDA", "onBackPressed Called");
//if super.getUrl shows a specific page:
if() {
super.loadUrl("file://android_asset/www/index.html#login");
};
}
}
现在我不确定我应该把它放在Java文件中的if语句中我试过WebView
,AppView
以及其他一些无用的东西以及我能看到的东西使用Java只会更改页面,如果这就是我想做的事情,我就不需要编辑后退按钮功能了,但是因为我放在了后面的按钮js代码中,我还需要运行一些DOM函数。 / p>
有没有办法能够与Java一起运行DOM函数
如果需要进一步澄清,请告诉我。
约翰
答案 0 :(得分:0)
所以问题是后退按钮会触发两个事件,因为它会返回到页面。您需要在JavaScript中执行的操作是停止事件传播。
因此,您需要在onBackKeyDown
上获取活动,并使用event.preventDefault();
停止传播。你不需要Java。
function onBackKeyDown(event)
{
currentPage = $.mobile.activePage.attr('id');
if(currentPage == "createUser"){
$.mobile.changePage("#logIn");
alert("Return To Login Page");
}
if(currentPage == "cardDetails"){
$.mobile.changePage("#createUser");
alert("Return to Create User");
}
if(currentPage == "mainMenu"){
$.mobile.changePage("#logIn");
alert("Return To Log In");
}
if(currentPage == "locationPage"){
$.mobile.changePage("#mainMenu");
alert("Return To Main Menu");
$("#pId").empty();
}
if(currentPage == "editUserPage")
{
$.mobile.changePage("#mainMenu");
alert("Return To Main Menu");
$("#trId").empty();
}
if(currentPage == "editCardDetailsPage")
{
$.mobile.changePage("#editUserPage");
alert("Return To Edit User");
}
event.preventDefault();
}