当按下手机上的“搜索”键时,ProgressDialog消失

时间:2010-07-30 16:12:55

标签: android progressdialog

在活动的onCreate中,我们连接到远程系统并下载数据。我们一直向用户显示可取消的ProgressDialog。使用AsyncTask完成下载。在preExecute()中,我们显示对话框,在postExecute()中我们忽略它。

问题是当下载正在进行并且显示ProgressDialog时,如果用户按下设备上的“搜索”按钮,则ProgressDialog将消失。后台线程仍在运行。

导致这种行为的原因是什么?如何避免这种情况?

请帮忙。

感谢。

1 个答案:

答案 0 :(得分:0)

这应该可以解决这个问题(请注意我把它放在对话框构建器上):

.setOnKeyListener(new DialogInterface.OnKeyListener() {

    @Override
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_SEARCH && event.getRepeatCount() == 0) {
            return true; // Pretend we processed it
        }
        return false; // Any other keys are still processed as normal
    }
})

也许甚至可以抓住正面和负面按钮,处理这些按钮,对任何其他按键都返回true。如果你能想出来就会好奇......

PS:我读到对话框中有更多的“漏洞”,即你可以摆脱它而不会碰到对话框本身的任何按钮。这显然是一个。有人知道其他人吗?

PS2:这似乎是Prevent ProgressDialog from being dismissed when I click the search button (Android)

的重复