2011-04-18 62 views
7

我正在使用PhoneGap进行Android应用程序开发,并且我被困在捕获设备上的后退按键!我尝试了其他主题和官方维基页面上的所有内容,但似乎没有任何作用! :(在Android上捕获PhoneGap上的按键

我可以使用keyEvent.menuTrigger和keyEvent.searchTrigger捕获菜单和搜索键,但似乎无法捕获后退按钮!我尝试了类似的keyEvent.backTrigger,但它不起作用!添加事件侦听器for '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 

难道这不是意味着someth ing.backTrigger()被调用,但对象不存在。那是什么?或者有什么办法吗?

也尝试过与KeyEvent一样,没有运气! 请帮忙!

在此先感谢! :)

回答

1

如果你正在使用上述2.0 API的水平,那么美国可以覆盖以下功能

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

第一件事 - Eclipse说“KeyEvent无法解析为类型”。我应该输入什么来使其工作?第二件事 - 这个Java方法会将任何东西暴露给Javascript接口吗?我能够听回按键上的按键,怎么样?谢谢您的帮助! – xtranophilist 2011-04-18 08:13:47

1

这里是我如何做到这一点的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

感谢您的回复! – xtranophilist 2011-04-21 10:31:11

6

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

适用于Pho neGap 0.9.6

您也可以处理其它按键与菜单按钮搜索按钮事件。