2013-05-13 25 views
5

Tôi đang sử dụng hộp thoại cảnh báo với các thuộc tính sau. Vấn đề là hộp thoại bị bỏ qua khi tôi nhấp vào nút quay lại hoặc chạm vào bên ngoài hộp thoại tôi không muốn điều đó. Làm thế nào tôi có thể giải quyết điều này vì setCancelable không giúp đỡ.AlertDialog bị loại bỏ khi quay lại ép

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setMessage(R.string.check_internet); 
    builder.setCancelable(false); 
+0

bạn có đang mở rộng DialogFragment không? – Blackbelt

+0

vâng tôi đang mở rộng đoạn thoại – Ravi

+0

Hãy thử điều này - http://stackoverflow.com/questions/8906269/alertdialogs-setcancelablefalse-method-not-working – Anukool

Trả lời

18

Vì bạn đang mở rộng một DialogFragment bạn cần phải gọi

setCancelable(false); 

bên trong của nó onCreate

chỉ setCancelable(false);

0
new AlertDialog.Builder(getActivity()); 

Cố gắng đưa một hoạt động ở đó, mà là ở dưới cùng của ngăn xếp (không đầu)

2
AlertDialog.Builder builder = new AlertDialog.Builder(this); // this activity context 
builder.setMessage(R.string.check_internet); 
AlertDialog alertDialog =builder.create(); 
alertDialog.setCancelable(false); 
alertDialog.show(); 
0

Đây là mặc định hành vi cho tất cả các Android thiết bị, suy nghĩ kỹ trước khi thay đổi điều đó bởi vì người dùng mong đợi khi bạn nhấn quay lại nút.

Tuy nhiên, bạn có thể thay đổi hành vi đó bằng cách ghi đèOnBackPressed() phương thức của lớp Dialog/DialogFragment. Đừng gọi super.OnBackPressed() bên trong hàm ghi đè tuy nhiên đó có thể bị rò rỉ bộ nhớ vì vậy hãy cẩn thận ..

+1

onBackPressed không có sẵn trong lớp mà kéo dài DialogFragment – Android

0
public void showAlert1(){ 
    MainActivity.this.runOnUiThread(new Runnable() { 
    public void run() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
        builder.setMessage(R.string.check_internet); 
        builder.setIcon(R.drawable.tick); 
        builder.setCancelable(false); 
        AlertDialog alert = builder.create(); 
        alert.show();    
       } 
      }); 
      } 
0

Không có hành vi mặc định của hộp thoại cảnh báo, hãy xem liên kết này dialog

+0

Một lưu ý về điều đó bình luận. Bạn có thể thực hiện một onDismiss, tuy nhiên có vẻ như yêu cầu API 17 là min. – Shygar

Các vấn đề liên quan