我正在創建一個自定義Android組件,它需要有時需要使用onBackPressed事件(例如,自定義ViewGroup中有一個彈出菜單,如果它顯示,後退按鈕事件關閉它並被消耗,否則將被忽略)。那可能嗎?我可以從ViewGroup子類中截取這個事件嗎?我可以在自定義ViewGroup中獲取onBackPressed事件嗎?
編輯: 我試着重寫onKeyPreIme,因爲Android文檔暗示,該方法永遠不會從ViewGroup中調用。
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event)
{
return true;
}
在onKeyPreIme文檔它說:前它通過與視圖層次結構相關聯的任何輸入方法處理
處理的鍵事件。這可以用於在IME消耗它們之前在特殊情況下截獲關鍵事件;一個典型的例子是處理BACK鍵來更新應用程序的UI,而不是讓IME看到它並關閉它自己。
onKeyDown事件。至於觀察者/觀察者,它需要我手動將事件從我的活動內部傳遞給我,這看起來像是黑客。我希望ViewGroup子類在不介入的情況下攔截事件。可能嗎? – 2012-08-13 09:42:32
如果onKeyDown不在你的情況下工作(我也懷疑),所以我認爲觀察者/可觀察模式是我腦海中唯一可用的最佳選擇。但是,您也可以嘗試在viewgroup類中定義一個自定義方法,並在onBackKeyPressed事件中從您的活動類中調用此方法。這在某種程度上有助於跳過觀察者/可觀察模式,以防您的代碼在未來看起來很花哨並且支持多個其他調用:) – waqaslam 2012-08-13 10:04:24