2012-05-13 4 views
1

Итак, у меня есть настраиваемый вид внутри диалогового окна, но его onKeyDown никогда не вызывается. Я тоже пробовал onKeyPreIme, но не работал, и установка диалога setCancelable в true тоже не помогла.Обработка обратного ключа в пользовательском представлении диалогового окна

редактировать:

//Removed all unnecessary code 

public class CustomView extends LinearLayout 
{  

    @Override 
    public boolean onKeyDown (int keyCode, KeyEvent event) 
    { 
      if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) 
      {   
        //do stuff here 
        return true; 

      }  
      return super.onKeyDown(keyCode, event);   
    } 
} 
public class CustomDialog 
{ 
    Dialog dialog; 
    public class CustomDialog(Context context) 
    { 
     dialog = new Dialog(context); 
     dialog.setContentView(R.layout.test);// the test.xml has CustomView 

    } 

} 
+0

что функциональные возможности, которые вы хотите? Отправьте код, пожалуйста. Неясно, что ваш код делает из ваших слов. –

+0

сделано, добавлен демонстрационный код – xmen

ответ

0

Двигайте onKeyDown логик к OnKeyListener реализации и зарегистрировать его в конструкторе вашего вида.

+0

Пробовал, не работал тоже – xmen

+0

Хорошо было использовать KeyListener диалогового окна, и он вызывается. – xmen

1

Почему вы не просто использовать:

public void onBackPressed() { 
     //desired functionality here 
     return; 
    } 
+0

Если я не ошибаюсь, он работает внутри Activity, а не внутри View. Кроме того, я использую Android 1.6, у этого нет этого события. – xmen

+0

В конечном итоге ваш 'Вид' будет использоваться для вашей' деятельности' право? –

+0

В противном случае, как указано в другом ответе, используйте 'onKeyListener' для вашего' onKeyDown'. –

Смежные вопросы