Кнопка отключения Android DroidGap
Пожалуйста, предложите, как я могу отключить событие нажатия кнопки "Назад" при работе с PhoneGap
?
Мне нужно что-то сделать в коде 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);
}
Ответы
Ответ 1
Вызов setOnKeyListener
on appView
помог мне.
Мне просто пришлось внести незначительные изменения в мой выше фрагмент кода, который выглядит следующим образом:
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);
}
});
Ответ 2
Чуть лучше, чем версия Нарендры. Он может обрабатывать вызовы клавиш для нажатия клавиш, отличных от кнопки возврата. Поместите код ниже внутри 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);
}
});
Ответ 3
В моем случае я использую Javascript + jquery так:
$(document).on('backbutton',
function(e){
e.preventDefault();
// do whatever you like here.
});
Ответ 4
// ************ stop the back button *****************
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
Ответ 5
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}