Захватить назад нажатие клавиши на PhoneGap для Android - PullRequest
7 голосов
/ 18 апреля 2011

Я использую PhoneGap для разработки приложений для Android и застреваю при захвате нажатия клавиши «Назад» на устройстве! Я попробовал все из других тем и с официальной вики-страницы, но ни одна из них не работает! (

Я мог бы захватить ключи меню и поиска с помощью keyEvent.menuTrigger и keyEvent.searchTrigger, но не могу захватить нажатие кнопки назад! Я пробовал keyEvent.backTrigger аналогично, но он не работал! Добавление прослушивателя событий для события backKeyDown также не работает!

Вот мой код:

BackButton.override();
    document.addEventListener('backKeyDown', function(e) {
  console.log('Caught it!');
}, false);
keyEvent.searchTrigger= searchPressed;
keyEvent.menuTrigger=menuPressed;
keyEvent.backTrigger=backPressed;

Консоль говорит:

Line 1 : Uncaught TypeError: Cannot call method 'backTrigger' of undefined

Разве это не означает, что что-то вызывается .backTrigger (), но объект что-то не существует. Что это такое? Или есть ли способ обойти?

Попробовал тоже самое с KeyEvent, но без удачи! Пожалуйста, помогите!

Заранее спасибо! :)

Ответы [ 3 ]

6 голосов
/ 25 июля 2011

PhoneGap Wiki обновлена ​​страница об Android-обработчике для PhoneGap 0.9.5:

// This is your app's init method. Here's an example of how to use it
function init() {
    document.addEventListener("deviceready", onDR, false);
} 

function onDR(){
    document.addEventListener("backbutton", backKeyDown, true);
    //boot your app...
}

function backKeyDown() {
    // do something here if you wish
    // alert('go back!');
}

У меня работает с PhoneGap 0.9.6

Вы также можете обрабатывать другие кнопки с помощью меню и кнопки поиска событий.

1 голос
/ 21 апреля 2011

Вот как я это делаю в PhoneGap с xuijs:

// inside your 'deviceready' handler
if (device.platform == 'Android') {
    BackButton.override();

    // add backkeyDown handler
    x$(document).on('backKeyDown', onBackKeyDown);
}

// back button handler
function onBackKeyDown() {
    // do something
    // or
    // BackButton.exitApp();
}
1 голос
/ 18 апреля 2011

если вы используете уровень API выше 2.0, тогда вы можете переопределить следующую функцию

@Override
public void onBackPressed() {
// do something on back.
return;
}

для отслеживания нажатия кнопки возврата назад.

, если нет, вы можете переопределить событие активности onKeyDown и кнопку отслеживания назад

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...