简体   繁体   English

Android DroidGap禁用后退按钮

[英]Android DroidGap disabling back button

Please, anyone suggest, how can I disable back button press event while working with PhoneGap ? 请任何人建议,如何在使用PhoneGap时禁用后退按钮事件?

I need to do something in my Activity , ( DroidGap code) for controlling the back button event. 我需要在我的ActivityDroidGap代码)中做一些事情来控制后退按钮事件。

Even, the following code works well in my Activity , but not working when being used with 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);    
}

Calling setOnKeyListener on appView helped me out. 调用setOnKeyListenerappView帮了我。

I just had to make a minor change in my above code snippet, which is as follows: 我只需要在上面的代码片段中进行一些小改动,如下所示:

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 EDITED

There actually occurs two actions while key-pressing event - Action Up & Action Down 按键事件实际上会发生两个动作 - Action UpAction Down

So, the following should be used in order to get the key event. 因此,应该使用以下内容来获取关键事件。

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); 
    } 
});

Slightly better than Narendra's version. 比Narendra的版本略胜一筹。 It can handle key up calls for key presses other than back button properly. 它可以正确处理按键以外的键按键。 Put the code below inside onCreate override for example. 例如,将下面的代码放在onCreate override中。

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); 
        } 
   });

In my case, I use Javascript + jquery like so: 就我而言,我使用Javascript + jquery如下:

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

         e.preventDefault();

         // do whatever you like here.

});
// ************ stop the back button  *****************

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

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

    return true;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM