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: ダイアログにはもっと「穴」があると読みました。つまり、ダイアログ自体のボタンを押さなくても穴を取り除くことができます。これは明らかに1つでした。誰か他の人を知っていますか?

PS2:これは、 [検索] ボタンをクリックしたときに ProgressDialogが閉じられないようにするの繰り返しのようです(Android)

于 2010-09-19T14:38:45.210 に答える