使用onBackPressed与Cordova后退按钮

时间:2015-07-24 05:02:24

标签: javascript java android jquery cordova

之前我问了一个类似的问题,但我希望得到更多的信息,以及我从上一个问题中学到的东西,我可以解决我的问题。 我需要能够使用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语句中我试过WebViewAppView以及其他一些无用的东西以及我能看到的东西使用Java只会更改页面,如果这就是我想做的事情,我就不需要编辑后退按钮功能了,但是因为我放在了后面的按钮js代码中,我还需要运行一些DOM函数。 / p>

有没有办法能够与Java一起运行DOM函数

如果需要进一步澄清,请告诉我。

约翰

1 个答案:

答案 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();
}