2

Androidフォンの戻るボタンを利用する機能を持っているのですが、なぜかそれを使うと意図したページではなく2ページ戻ってしまいます。

これは、現時点で私のコードがどのように見えるかです:

function onBackKeyDown()
{
    currentPage = $.mobile.activePage.attr('id');
    if(currentPage == "createUser")
    {
        $.mobile.changePage("#logIn");
        alert("Return To Login Page");
        currentPage = "";
    }
    else if(currentPage == "cardDetails")
    {
        $.mobile.changePage("#createUser");
        alert("Return To Create User");
        currentPage = "";
    }
    else if(currentPage == "mainMenu")
    {
        $.mobile.changePage("#logIn");
        alert("Return To Log In");
        currentPage = "";
    }
    else if(currentPage == "locationPage")
    {
        $.mobile.changePage("#mainMenu");
        alert("Return To Main Menu");
        currentPage = "";
    }
    else if(currentPage == "editUserPage")
    {
        $.mobile.changePage("#mainMenu");
        alert("Return To Main Menu");
        currentPage = "";
    }
    else if(currentPage == "editCardDetailsPage")
    {
        $.mobile.changePage("#editUserPage");
        alert("Return To Edit User");
        currentPage = "";
    }
    else
        alert("TEST");
}

たとえば、私が入ってcardDetailsいて戻るボタンを押すと、 に戻り、 に戻りcreateUserますlogIn。私のコードにこれを引き起こすものはありますか? currentPage を空にリセットしようとしました。

編集: 要求された 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");
        }
    }

どんな助けでもいただければ幸いです

ジョン

4

2 に答える 2

0

Cordova を使用している場合、Android 以外の他のデバイスでコードを使用したいですか? その場合、Java をまったく使用したくありません。元の質問に戻りますが、これは役に立ちますか?:

    function onDeviceReady() {
    // Register the event listener
    document.addEventListener("backbutton", onBackKeyDown, false);
}

この投稿から取得)

于 2015-07-25T20:41:57.700 に答える
0

Androidの戻るボタンを検出して操作するだけでなく、オーバーロードする必要があります。

キーリスナーを削除するか、KEY_BACK がある場合は true を返します

キーをキャッチバックするには、次のものが必要です(スーパーを呼び出さないようにしてください)

また、サービスをバックグラウンドで実行する予定がある場合は、必ず startForeground() を見て、進行中の通知があることを確認してください。そうしないと、メモリを解放する必要がある場合に Android によってサービスが強制終了されます。

@Override
public void onBackPressed() {
   Log.d("CDA", "onBackPressed Called");
   Intent setIntent = new Intent(Intent.ACTION_MAIN);
   setIntent.addCategory(Intent.CATEGORY_HOME);
   setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   startActivity(setIntent);
}

更新: アプリ固有の擬似コードの変更

public class FnBApp extends DroidGap {
    ....
    @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");
       };
    }

Android - 「戻る」ボタンをオーバーライドして、アクティビティを終了()しないようにする方法は?

于 2015-07-23T16:34:23.333 に答える