2011-04-18 11 views
7

Estoy usando PhoneGap para el desarrollo de aplicaciones de Android y estoy atascado en la captura de la tecla de retroceso presionar en el dispositivo! Probé todo desde otros hilos y desde la página oficial de la wiki, pero ninguno parece funcionar. :(Capturar la tecla Atrás presionar en PhoneGap para Android

Pude capturar el menú y las teclas de búsqueda con keyEvent.menuTrigger y keyEvent.searchTrigger, pero parece que no puedo capturar el botón Atrás. Intenté keyEvent.backTrigger de manera similar pero no funcionó. Añadí el detector de eventos para evento 'backKeyDown' no funciona bien

Aquí está mi código:

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

La consola dice:

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

no ¿eso quiere decir someth ing.backTrigger() se está llamando pero el objeto algo no existe. ¿Qué es eso? ¿O hay alguna forma de evitarlo?

Intenté lo mismo con KeyEvent también, ¡sin suerte! Por favor ayuda!

¡Gracias de antemano! :)

Respuesta

1

si está utilizando nivel de la API por encima de 2,0 entonces u puede reemplazar la función

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

para el seguimiento posterior botón de eventos se aprieta a continuación.

no se si a continuación, se puede anular onKeyDown caso de actividad y realizar un seguimiento posterior botón

@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); 
} 
+0

Lo primero - Eclipse dice "KeyEvent no se puede resolver en un tipo". ¿Qué debo importar para que funcione? En segundo lugar, ¿este método Java expondría algo a la interfaz de Javascript? ¿Podría escuchar las pulsaciones de tecla de Javascript, cómo? ¡Gracias por la ayuda! – xtranophilist

1

Así es como lo hago en PhoneGap w/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(); 
} 
+0

¡Gracias por la respuesta! – xtranophilist

6

PhoneGap Wiki página sobre el controlador de botones de Android tiene actualizado para 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!'); 
} 

Trabaja para mí con Pho neGap 0.9.6

También puede manejar otros botones con menubutton y searchbutton eventos.

Cuestiones relacionadas