38

ユーザーがファイルをダウンロードしたときに進行状況ダイアログを表示する Android プロジェクトに取り組んでいます。

ただし、ユーザーが画面に触れると、進行状況ダイアログは 100% を待たずに閉じられます。私はすでにこれを使用しようとしました:

 public boolean onTouchEvent(MotionEvent e) {
        return true;
    } 

しかし、それは機能していません。

どうすればこれを回避できますか?

更新 1:

setCancelable(false) は正常に動作しているようです。回答いただきありがとうございますが、ダウンロードが長続きし、ユーザーが放棄することを決定した場合、私はすでにバックキーコードを無効にしているため、それは不可能です:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

どうすればこれを理解できますか?

4

6 に答える 6

112

使用するdialog.setCancelable(false);

例 :

        ProgressDialog dialog = new ProgressDialog(WiFiFinderActivity.this);
        dialog.setMessage("please wait...");
        dialog.show();
        dialog.setCancelable(false);
        dialog.setCanceledOnTouchOutside(false);
于 2013-03-15T12:30:59.523 に答える
11

このオーバーライド機能を使用したくない..設定するだけです

final Dialog dialog=new Dialog(dialogactivity.this);
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
于 2013-03-15T12:35:19.437 に答える
4

この回線を使用できます

dialog.setCanceledOnTouchOutside(false);

また

dialog.setCancelable(false);

あなたの要件に従って

于 2013-03-15T12:31:44.313 に答える
1

試してみてくださいmyDialog.setCancelable(false);。Progress Dialog に AertDialog と同じメソッドがあるかどうかはわかりませんが、試してみる価値があるかもしれません。

編集 (更新用に追加): 以下を使用してみてください。

myDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            //do your canceling stuff here
        }
    });

また、AlertDialog でこれを行っていますか、それとも AlertDialog.Builder を使用していますか?

AlertDialog.Builder を使用している場合は、次を使用する必要があります。

AlertDialog myProgressDialog = myDialog.create();
myProgressDialog.show();

myProgressDialog.dismiss();その後、NegativeButton onClick で使用できるようになります。

于 2013-03-15T12:31:15.023 に答える