2015-03-04 6 views
0

У меня есть диалог и в этом диалоговом окне у меня есть кнопка. Предполагается, что при нажатии появится поиск. И это работает совершенно нормально.Android Dialog OnKeyUp (KeyEvent)?

НО Я хочу настроить событие OnKeyUp, поэтому, если пользователь нажимает на кнопку фактического поиска на телефоне (не на экране), появляется окно поиска.

я был в состоянии сделать это в деятельности так:

public override bool OnKeyUp(Keycode keyCode, KeyEvent e) 
{ 
    if (keyCode == Keycode.Search) { 
     // do something here 
    } 
    return base.OnKeyUp (keyCode, e); 
} 

Но это override метод. Как я могу назвать это для Dialog?
Это, как я создал Dialog:

multiSelectDialog = new Dialog (context); 
multiSelectDialog.RequestWindowFeature (1); 
multiSelectDialog.SetContentView (dialogView); 
multiSelectDialog.Show(); 

Диалог имеет свойство OnKeyUp.

multiSelectDialog.OnKeyUp(KeyCode.Search, KeyEvent e); 

Но я не уверен, как создать KeyEvent.

Спасибо за ваше время.

+0

Пожалуйста, ваш диалоговый код. –

+0

Возможно, вам понадобится создать свой собственный класс диалога. Посмотреть это сообщение: http://stackoverflow.com/questions/8529653/which-interface-is-used-to-detect-key-events-from-the-dialog-class-android-sdk –

+0

@ DanielNugent Я не уверен какой код диалога вы просите. Вы имеете в виду фактический код просмотра dialogView? –

ответ

0

onKeyUp() - это обратный вызов на Dialog, он будет вызываться в событии с ключом, вы не называете его самим.

Вместо этого вы должны расширить Dialog и переопределить onKeyUp(), например:

multiSelectDialog = new Dialog(context) { 
    @Override 
    public boolean onKeyUp (int keyCode, KeyEvent event) { 
     // do something here 
     return true; // or false, depending on what you want to do 
    } 
}; 
multiSelectDialog.requestWindowFeature(1); 
multiSelectDialog.setContentView(dialogView); 
multiSelectDialog.show(); 
Смежные вопросы