1

アプリケーションでファイルをダウンロードするための進行状況ダイアログを表示していますが、ユーザーがダウンロードをキャンセルする必要がある場合は、[戻る] ボタンを押す必要があり、2 つのボタンがあるアラート ダイアログがポップアップします。問題は、警告ダイアログのボタンをダブルクリックする必要があり、警告ダイアログだけが閉じられることです。それに対する解決策を提案してください。

ここにあなたの参照のためのコードの平和があります..

@Override
    protected Dialog onCreateDialog(int id)
    {
        switch (id)
        {
        case progress_bar_type:
            pDialog = new ProgressDialog(this);
            pDialog.setMessage("Downloading file. Please wait...");
            pDialog.setIndeterminate(false);
            pDialog.setMax(100);
            pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            pDialog.setCancelable(true);
            pDialog.show();
            pDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {

                @Override
                public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                    // TODO Auto-generated method stub
                    if(keyCode == KeyEvent.KEYCODE_BACK){

                        running = false;
                        /*Intent intent = new Intent(context, NewDialog.class);
                        startActivity(intent);*/
                        AlertDialog.Builder  alertDialog = new AlertDialog.Builder(context);
                        alertDialog.setIcon(R.drawable.ic_launcher);
                        alertDialog.setTitle("Ariisto");
                        alertDialog.setMessage("Do you Want to Cancel the Download ?");
                        alertDialog.setCancelable(true);
                        alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {

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

                                File externalFile = new File(Environment.getExternalStorageDirectory(),"downloadedfile.pdf");
                                externalFile.delete();
                                pDialog.dismiss();
                                running = false;
                                Log.d("External File", "DELETED");
                                pDialog.setProgress(0);
                                count = 2;
                            }
                        });
                        alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                                new DownloadFileFromURL().execute(file_url);
                                running = true;
                                count = 0;
                            }
                        });
                        AlertDialog alert = alertDialog.create();
                        alert.show();
                    }
                    return false;
                }
            });
4

1 に答える 1

1

問題は、オーバーライドすると、2 つのイベントと指定されたキーがonKey()登録されることです。そのため、これらの両方のイベントで を 2 回起動することがあります。メソッドをオーバーライドして、そこにコードを移動することをお勧めします。お役に立てれば。ActivityKEY_DOWNKEY_UPAlertDialogonKeyDown()

于 2012-11-09T05:46:52.103 に答える