覆盖默认密钥功能的问题

时间:2009-08-27 06:19:00

标签: android

在我的应用程序中,我覆盖android的反键默认函数(通过Override onkeydown).its工作正常。但是当微调器组件默认选择元素窗口和虚拟键盘时(在Android 1.5中)进入屏幕默认的后退键功能由于我的压倒性而崩溃了。

有什么方法可以解决这个问题吗?或者virtualkeypadwindow和spinner组件窗口的名称是什么?谢谢。 。 。

1 个答案:

答案 0 :(得分:1)

问题是当屏幕上有一个Dialog实际上是一个完全独立的Activity时,对话框助手只是将它隐藏起来。只有两种方法可以解决这个问题(取决于你想要做什么)。

您可以扩展您正在使用的对话框类型,并覆盖您派生类中的onKeyPress,然后使用它而不是系统的默认对话框。

public class MyDialog extends ProgressDialog {
    /*  ...  */

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // handle the keypress
            return true;
        }
        return false;
    }
}

您可以使用可取消选项启动Dialogs然后捕获取消操作...类似于:

public class MyActivity implements OnCancelListener {
    /*  ...  */

    public void startDialog() {
        ProgressDialog pd = ProgressDialog.show(
            MyActivity.this,    // Context
            "Progress Title",   // title for dialog
            "Progress Message", // message for dialog
            true,               // indeterminate?
            true,               // cancellable?
            this                // onCancelListener()
        );
    }

    @Override
    public void onCancel(DialogInterface dialog) {
        // the user canceled out of the load dialog (hit the 'back' button)... do something here
    }
}