2013-04-05 130 views
10

任何人都會建議,請問如何在使用PhoneGap時禁用後退按鈕事件?Android DroidGap禁用後退按鈕

我需要在我的Activity,(DroidGap代碼)中執行一些操作來控制後退按鈕事件。

甚至,以下代碼在我的Activity中運行良好,但在與DroidGap一起使用時不起作用。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR 
     return true; 
    } 
    return super.onKeyDown(keyCode, event);  
} 

回答

7

調用上appViewsetOnKeyListener幫了我。

我只是做我上面的代碼片段的微小變化,這是如下:

appView.setOnKeyListener(new OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      return true; 
     } 
     return onKeyDown(keyCode, event); 
    } 
}); 

EDITED

有實際發生的兩個動作,而按鍵事件 - Action Up & Action Down

所以,應該使用以下命令來獲得關鍵事件。

appView.setOnKeyListener(new OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { 
      // Do Here whatever you want 
      return true; 
     } 
     return onKeyDown(keyCode, event); 
    } 
}); 
+0

已經有同樣的問題嘗試過的代碼,但這個事件發射兩次。 – TechFanatic 2013-04-24 11:36:04

+0

@PnestecDev:你是否試圖在你的後退按鈕上點擊一下? – NarendraJi 2013-04-24 11:45:12

+0

是的,我正在嘗試導航返回點擊頁面。 – TechFanatic 2013-04-24 11:46:24

2

在我的情況,我用javascript + jquery的,像這樣:

$(document).on('backbutton', 
    function(e){ 

     e.preventDefault(); 

     // do whatever you like here. 

}); 
+0

有什麼事情,可以在我的活動代碼來完成? – NarendraJi 2013-04-05 14:11:36

+0

不適用於我。 jQ 1.8.3 + jQM 1.3.2在Android(摩托羅拉Razor) – Daniel 2013-12-20 11:09:06

+0

它不起作用(jQ v1.11.3) – JFouad 2015-09-28 18:46:18

5

稍好於Narendra的版本。它可以正確處理按鍵以外的按鍵操作。例如,將下面的代碼放在onCreate重寫中。

appView.setOnKeyListener(new View.OnKeyListener() { 

     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_UP) { 
       if(keyCode == KeyEvent.KEYCODE_BACK) { 
        // Do Stuff Here 
        return true; 
       } 
       return onKeyUp(keyCode, event); 
      } 
      return onKeyDown(keyCode, event); 
     } 
    }); 
+0

這是一個很棒的臨時版本。謝謝 !!! – Rajaraman 2013-05-31 06:32:49

0
// ************ stop the back button ***************** 

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 

     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
0
if (keyCode == KeyEvent.KEYCODE_BACK) { 

    return true; 
}