2011-04-18 63 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

您也可以處理其它按鍵與菜單按鈕搜索按鈕事件。