簡體   English   中英

導航歷史記錄為空時,Android中的“后退”按鈕導致應用程序崩潰

[英]Back Button in Android Cause application to crash when navigation history is null

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(event.getAction() == KeyEvent.ACTION_DOWN){
        switch(keyCode)
        {
        case KeyEvent.KEYCODE_BACK:
            if(web1.canGoBack() == true){
                web1.goBack();
            }else{
                finish();
            }
            return true;
        }

    }
    return super.onKeyDown(keyCode, event);
}

我在使用PhoneGap構建的android應用程序中使用以下功能。 該應用程序具有WebView。

當按下返回按鈕時,它將向后導航。 但是,當導航歷史記錄為null時,它將使應用程序崩潰。 錯誤日志是

java.lang.NullPointerException at org.apache.cordova.DroidGap.onKeyUp(DroidGap.java:1057)

我怎樣才能解決這個問題?。

檢查歷史記錄是否為空的條件,然后單擊后退按鈕,使用finish();。

覆蓋您的活動

@Override
public void onBackPressed() {
if(navigatinHistory == null){
   Log.d("CDA", "onBackPressed Called");
   finish();
}
}

問題在於onKeyUp的代碼暗示已在DroidGap中設置了appView成員。

由於尚未設置,因此在發生KeyUp事件時應用程序將崩潰。

兩種解決方法:

  1. 覆蓋onKeyUp方法
  2. 在onCreate方法中調用init()方法

我建議您第二個,更好。

在Phonegap應用程序中,您應該監聽事件“ backbutton ”以處理導航,並在需要時退出應用程序。

document.addEventListener("backbutton", function() {

    // ...

    navigator.app.exitApp(); // call it to exit the app

}, false);

http://docs.phonegap.com/zh-CN/3.5.0/cordova_events_events.md.html#backbutton

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM