哪个接口用于检测对话类(Android SDK)中的关键事件?

哪个接口用于检测对话类(Android SDK)中的关键事件?,android,sdk,dialog,onkeyup,onkeydown,Android,Sdk,Dialog,Onkeyup,Onkeydown,我创建了一个简单的自定义对话框,要求用户“按键”。这样做的目的是,我可以将他们按下的任何键映射到应用程序中的某个函数。不幸的是,我无法找出用于检测关键事件的正确接口。我的班级是这样的: public class ScancodeDialog extends Dialog implements OnKeyListener { public ScancodeDialog( Context context ) { super(context); set

我创建了一个简单的自定义对话框,要求用户“按键”。这样做的目的是,我可以将他们按下的任何键映射到应用程序中的某个函数。不幸的是,我无法找出用于检测关键事件的正确接口。我的班级是这样的:

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

我最初尝试从视图使用键侦听器界面:

import android.view.View.OnKeyListener;
但是,由于对话框不是视图,所以这不起作用。我还尝试了DialogInterface中的一个:

import android.content.DialogInterface.OnKeyListener;

这似乎是一个更好的选择,因为API表明Dialog实现了DialogInterface,但我仍然没有收到关键事件。有什么建议我可以试试吗?

您从未声明过要听按键的对话框

例如:

this.setOnKeyListener(...)

this关键字指的是它所在的类。。这是一个对话框。

onkey侦听器是“this”。。我是不是要说“this.setOnKeyListener(this)”?这似乎是多余的,但我会努力的..成功了,你是个天才!我从来没有想过要尝试一下。或者你可以尝试一个匿名侦听器,而不是实现整个过程。