Я создал простой настраиваемый диалог, который просит пользователей «Нажать клавишу». Цель этого состоит в том, чтобы я мог сопоставить любую клавишу, которую они нажимают, с функцией в приложении. К сожалению, я не могу понять, какой правильный интерфейс использовать для обнаружения ключевых событий. Мой класс выглядит так:
public class ScancodeDialog extends Dialog implements OnKeyListener
{
public ScancodeDialog( Context context )
{
super(context);
setContentView( R.layout.scancode_dialog );
setTitle( "Key Listener" );
TextView text = (TextView) findViewById( R.id.scancode_text );
text.setText( "Please press a button.." );
ImageView image = (ImageView) findViewById( R.id.scancode_image );
image.setImageResource( R.drawable.icon );
getWindow().setFlags( WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM );
}
@Override
public boolean onKey( DialogInterface dialog, int keyCode, KeyEvent event )
{
if( keyCode != KeyEvent.KEYCODE_MENU )
dismiss();
return true;
}
}
Я пробовал это с строкой getWindow (). SetFlags () и без нее (это было предложение из другого вопроса, которое мне не помогло в моем случае). Очевидно, что позже я добавлю больше функций в класс, но сейчас диалоговое окно должно закрываться всякий раз, когда пользователь нажимает клавишу. Однако onKey никогда не вызывается.
Изначально я пытался использовать интерфейс ключевого слушателя из View:
import android.view.View.OnKeyListener;
Но поскольку диалог не является видом, это не сработало. Я также попробовал один из DialogInterface:
import android.content.DialogInterface.OnKeyListener;
Это выглядело как лучший выбор, поскольку API указывает, что Dialog реализует DialogInterface, но я до сих пор не получаю ключевые события. Любые предложения, которые я могу попробовать?