2012-02-15 13 views
8

tôi cần phải nắm bắt một sự kiện khi người dùng nhấn phím trở lại và cố gắng để bỏ qua hộp thoại Tôi có một mã như thế nàyLàm thế nào để nắm bắt một sự kiện khi người dùng bỏ một hộp thoại cảnh báo bằng cách nhấn backKey trong Android

AlertDialog alertDialog = new AlertDialog.Builder(AppNotification.this).create(); 
    alertDialog.setTitle("Caution"); 
    alertDialog.setMessage("Alert"); 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     finish(); 
    } }); 
    alertDialog.show(); 
} 

Bây giờ ở đây tôi đã cho người dùng một tùy chọn, Nhưng giả sử nếu anh ta nhấn phím trở lại sau đó tôi cần phải thực hiện một số hành động khác. Làm thế nào để làm điều đó?

+0

[Ở đây] [1] là một câu hỏi tương tự với câu trả lời được chấp nhận. [1]: http://stackoverflow.com/questions/2000102/android-override-back-button-to-act-like-home-button – rics

+0

Nope .. Tôi đang nói về hộp thoại cảnh báo và trở lại sự kiện quan trọng ... tôi biết về BackKeyEvent .... –

+0

Đó là một gợi ý làm thế nào để ghi đè lên nút quay lại. Rajeel giải thích cách thêm nó vào cảnh báo. – rics

Trả lời

23

này sẽ giúp bạn

alertDialog.setOnCancelListener(new OnCancelListener() { 
    public void onCancel(DialogInterface dialog) { 
     // Your code ...     
    } 
}); 
0

Tạo nút để quản lý sự kiện phím quay lại. Bây giờ bên trong sự kiện onClick cố gắng cung cấp mã dưới đây.

back_key.setOnClickListener(new OnClickListener() 
{ 

     public void onClick(View v) 
     { 
      // Your Tracking Code 
     } 
}); 
1

Bạn có thể chụp chìa khóa lại sự kiện khi cảnh báo của bạn xuất hiện để cài một số boolean true

AlertDialog alertDialog = new AlertDialog.Builder(AppNotification.this).create(); 
    alertDialog.setTitle("Caution"); 
    alertDialog.setMessage("Alert"); 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     finish(); 
    } }); 
    isAlertShowing = true; // set to true for alert 
    alertDialog.show(); 
} 

sau đó trong sự kiện

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
 if (keyCode == KeyEvent.KEYCODE_BACK) 
       { 
           if(isAlertShowing) 
           { 
       // perform your task here 
      } 

       } 

       return super.onKeyDown(keyCode, event); 
} 
+0

Đây là một cách hay ... Tôi đã nghĩ đến bất kỳ người nghe nào mà hộp thoại cảnh báo có ... :) –

1

Ngoài ra còn có

alertDialog.setOnDismissListener(dialog -> { /* code goes here */ }); 

dường như đang xử lý cụ thể sự kiện loại bỏ.

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