2010-08-30 27 views
11

Tôi đã sử dụng chức năng onKeyDown trong hoạt động ..... nhưng khi nút quay lại được nhấp vào trước tiên, hủy bỏ hộp thoại và đi đến hoạt động của chúng tôi. ..Tôi muốn cả hai hoạt động và hộp thoại đóng lại khi nhấp vào nút quay lại hoặc tắt nút quay lại khi hộp thoại được hiển thị ...Làm thế nào để vô hiệu hóa nút quay lại khi hộp cảnh báo trên màn hình

có thể đề xuất bất kỳ giải pháp nào cho việc này ....

Xin cảm ơn trước,


Cập nhật

Xin chào Cảm ơn câu trả lời của bạn. progressDialog với .setCancelable(false); đang hoạt động tốt.

Nhưng ở đây tôi muốn điều khác biệt. Khi hộp thoại tiến trình đang chạy thì tôi sẽ nhấn phím BACK và tôi muốn hiển thị hộp thoại cảnh báo để người dùng có thể thông báo rằng tiến trình đang chạy.

Có giải pháp nào về nó không?

Hãy giúp tôi.

Xin cảm ơn trước.

Trả lời

58

Bạn có cố gắng thiết lập thuộc tính của nó setCancelable() false

Something như thế này

progressDialog.setCancelable(false); 
+10

- tính năng này cũng hoạt động với AlertDialog ... chỉ trong trường hợp ai đó cần biết. – dell116

2

Có thể điều này sẽ giúp đỡ trong trường hợp của bạn:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      // Show your Alert Box here 
     } 
     return false; 
    } 
+0

Cảm ơn câu trả lời của bạn. Sự cố đã lâu. Tôi sẽ cố gắng nếu có thời gian. – gsmaker

+0

chỉ để được muộn hơn không bao giờ :) –

0

Tôi chỉ muốn cải thiện @MoJo answer

alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 

     @Override 
     public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
       //Your handler 


       return false; 
     } 
}); 
+0

Sau đó, bạn có thể đã chỉnh sửa câu trả lời của tôi –

0

Cá nhân một giải pháp sạch hơn là để hoàn thành LoginActivity trước khi bắt đầu ý định thay vì đặt cờ trong gói hoạt động mới hoặc ghi đè bất kỳ phương pháp nào. Hãy thử một cái gì đó như thế này bên dưới, nơi Đăng nhập là hoạt động đăng nhập của bạn và Trang chủ là hoạt động đầu tiên sau khi đăng nhập thành công trong người dùng.

finish(); 
Intent intent = new Intent(Login.this, Home.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 
0

"Tôi muốn cả hai hoặc cả hai hoạt động và hộp thoại đóng"

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 
    @Override 
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
    finish(); 
    return true; 
    } 
}); 

"hoặc vô hiệu hóa các nút quay lại khi hộp thoại được hiển thị" Đây có thể chặn sẽ trở lại từ hộp thoại. Khi tạo tự động, hãy thêm:

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 
    @Override 
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
    return true; 
    } 
}); 

Trả lại đúng là ngăn hộp thoại này đóng và không thể đóng được bằng cách nhấp lại. Ngoài ra, tôi khuyên bạn nên thêm:

dialog.setCanceledOnTouchOutside(false); 

Điều gì sẽ ngăn người dùng loại bỏ hộp thoại bằng cách nhấp vào bên ngoài hộp thoại.

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