2013-03-15 31 views
29

Tôi đang làm việc trên một dự án Android hiển thị hộp thoại tiến trình khi người dùng tải xuống tệp.Làm thế nào để tránh bỏ qua hộp thoại tiến trình của tôi khi người dùng chạm vào màn hình?

Nhưng khi người dùng chạm vào màn hình, hộp thoại tiến trình sẽ bị loại bỏ mà không đợi 100%. Tôi đã cố gắng sử dụng điều này:

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

Nhưng nó không hoạt động.

Làm cách nào để tránh điều này?

UPDATE 1:

Dường như setCancelable (false) hoạt động tốt. Cảm ơn bạn rất nhiều vì câu trả lời của bạn, nhưng khi tải về lâu dài và người dùng quyết định từ bỏ nó sẽ là không thể bởi vì tôi đã ngừng hoạt động các keyCode lại:

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

Làm thế nào tôi có thể con số này ra?

+0

Bạn đang sử dụng AlertDialog? –

+0

Bạn có chắc chắn không? Bạn có thể cho chúng tôi thấy một số mã không? – Anukool

+0

Vui lòng thêm mã của bạn –

Trả lời

85

Sử dụng dialog.setCancelable(false);

Ví dụ:

 ProgressDialog dialog = new ProgressDialog(WiFiFinderActivity.this); 
     dialog.setMessage("please wait..."); 
     dialog.show(); 
     dialog.setCancelable(false); 
     dialog.setCanceledOnTouchOutside(false); 
+9

'dialog.setCancelable (false);' là đủ. Trong khi 'hộp thoại.setCanceledOnTouchOutside (false); 'CHỈ ngăn người dùng từ bỏ hộp thoại khi anh ta nhấp vào bất cứ nơi nào khác trên màn hình, ALSO cũ ngăn người dùng loại bỏ hộp thoại khi anh ấy nhấp vào nút quay lại. Do đó, bạn không cần khai báo cả hai. – Emzor

1

Hãy thử myDialog.setCancelable(false);. Tôi không chắc liệu một Hộp thoại tiến trình có phương pháp giống như một AertDialog, nhưng nó có thể đáng để thử.

Chỉnh sửa (thêm cho bản cập nhật của bạn): Hãy thử sử dụng như sau:

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

Ngoài ra bạn làm điều này trong một AlertDialog hoặc bạn đang sử dụng AlertDialog.Builder?

NẾU bạn đang useing AlertDialog.Builder bạn nên sử dụng như sau:

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

Sau đó, bạn sẽ có thể sử dụng myProgressDialog.dismiss(); trong NegativeButton onClick của bạn.

4

Bạn có thể sử dụng dòng này

dialog.setCanceledOnTouchOutside(false); 

hoặc

dialog.setCancelable(false); 

theo reqirement của bạn

11

Bạn không muốn sử dụng chức năng ghi đè này .. Bạn chỉ cần đặt

final Dialog dialog=new Dialog(dialogactivity.this); 
dialog.setCancelable(false); 
dialog.setCanceledOnTouchOutside(false); 
0

Thêm phương pháp này vào chuyên nghiệp của bạn hộp thoại gress:

progressDialog.setCanceledOnTouchOutside(false); 
Các vấn đề liên quan