3

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

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

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

请帮忙。

谢谢。

4

1 回答 1

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:当我单击搜索按钮时,这似乎是防止 ProgressDialog 被解雇的重复(Android)

于 2010-09-19T14:38:45.210 回答