繁体   English   中英

使用onBackPressed和Cordova后退按钮

[英]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");
       };
    }
}

现在,我不确定应该在尝试了WebViewAppViewAppView的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM