2013-04-05 89 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; 
}