我的同事以前有关某个警报对话框的源代码是

        this.mProgressDialog = new ProgressDialog()
        {
            @Override
            public boolean onKeyDown(int keyCode, KeyEvent event) {
                SimLog.d(TAG, "onKeyDown()[back:4]=" + keyCode);
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                    dismiss();
                    doCancelImport();
                    finish();
                    return true;
                }

                return super.onKeyDown(keyCode, event);
            }
        };


要对此对话框进行一些修改,我必须将此代码更改为:

        this.mProgressDialog = mBuilder.create();
        this.mProgressDialog.setOnKeyListener(new OnKeyListener() {

            @Override
            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                SimLog.d(TAG, "onKeyDown()[back:4]=" + keyCode);
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                    dismiss();
                    doCancelImport();
                    finish();
                    return true;
                }
                return super.onKey(keyCode, event);
            }
        });


但是我的日食显示了一个错误:

“ Dialog类型的方法setOnKeyListener(DialogInterface.OnKeyListener)不适用于参数(new OnKeyListener())”

为什么这不起作用?我该如何修改?

最佳答案

您可能导入了错误的OnKeyListener类,因此setOnKeyListener()的参数类型不匹配。

您可以改用以下方法:

this.mProgressDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {


或者您使用import android.content.DialogInterface.OnKeyListener;导入正确的类型

关于java - 为什么我的setOnKeyListener()不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34387282/

10-10 03:09