[英]Using onBackPressed with Cordova backbutton
我之前曾问过类似的问题,但我希望能获得更多信息,并希望从上一个问题中学到的知识能够解决我的问题。 我需要能够使用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");
};
}
}
现在,我不确定应该在尝试了WebView
, AppView
和AppView
的Java文件中的if语句中放入什么内容,但无济于事,使用Java从我看到的内容只能更改页面,如果那是我想做的所有事情都不需要编辑后退按钮功能,但是正如我放置在后退按钮js代码中一样,我还需要运行一些DOM函数。
有没有一种方法可以与Java一起运行DOM函数
如果需要更多说明,请告诉我。
约翰
因此,问题在于后退按钮会触发两个事件,因为它会返回页面。 您需要在JavaScript中执行的操作是停止事件传播。 因此,您需要在onBackKeyDown
上获取事件,并使用event.preventDefault();
停止传播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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.