0

RunOnUiThread内にあるAlertDialogのOnClickイベント内でメソッドを呼び出す際に問題が発生しました。

以下のロジックは、applyUpdate()メソッドの実行中にProgressDialogが表示されることです。ダウンロードが失敗したか、まだ進行中の場合、メソッドは0を返します。ユーザーは、ダウンロードを再開するか続行するかを選択できます。

問題は、[再起動]を選択すると、AlertDialogが画面に表示されたままになることです(ボタンがクリックされた状態)。

ダイアログが閉じる前にdoDownload()が開始されていますか、それともスレッドの問題ですか、それとも他の何かですか?

public void doApply(View view){
    progressDialog = ProgressDialog.show(UpdateForm.this, "", "Applying update...");

    runOnUiThread(new Runnable() {

        @Override
        public void run() {
            try{
                applyUpdate = nnEngine.applyUpdate();
            } catch (Exception e) {
                // Handle exception
            }

            // Check update result.
            progressDialog.dismiss();
            switch (applyUpdate) {
// Other cases removed.....
                case 0:
                    // Download in progress or failed.
                    AlertDialog.Builder inprogDlg = new AlertDialog.Builder(UpdateForm.this);
                    inprogDlg.setTitle("Download in progress or failed.");

                    inprogDlg.setPositiveButton("Continue download", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();

                        // Wrong button may be displayed.
                        notifyUser(null, checkDownloadButton);
                    }
                });

                inprogDlg.setNegativeButton("Restart download", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        doDownload(getWindow().getDecorView().findViewById(android.R.id.content));
                    }
                });

                inprogDlg.create().show();
                break;
            }
        }
    });
}
4

0 に答える 0