2010-09-01 61 views
21

Tôi đang viết một ứng dụng sẽ có hai Hoạt động, khi người dùng nhấn nút quay lại trên hoạt động thứ hai, một hộp thoại sẽ bật lên yêu cầu người dùng xác nhận hành động. Vì vậy, làm thế nào để tôi đánh chặn này? Tôi nghiêm túc nghi ngờ về coz này backstack là một phần của hệ điều hành chính nó. Có ai tìm thấy một cách giải quyết?Chặn nút quay lại

+0

Hãy suy nghĩ kỹ về việc này. Đây là hành vi Android không chuẩn và có thể làm phiền người dùng của bạn. Bạn đang cố gắng tránh chúng mất dữ liệu chưa được lưu? – I82Much

+0

Có chính xác @ I82Much! –

Trả lời

50

Trong một hoạt động bạn chỉ có thể ghi đè lên

onBackPressed()

chỉnh sửa: đó là api lvl 5 +:/4 và dưới đây bạn gotta ghi đè onKeyDown()

+0

Rất tốt, cảm ơn @schwiz –

10

Chỉ cần ghi đè phương thức onKeyDown trong hoạt động của bạn và tìm nút quay lại. Trả về true để sự kiện được tiêu thụ.

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //Do something here 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

+1, tôi đã làm điều này trước và nó chắc chắn hoạt động mặc dù khi tôi sử dụng nó, nó đã được trước khi tôi hiểu khái niệm của nhiều hoạt động ... –

+0

// Làm somethings ở đây (Tôi đang cố gắng để hiển thị một bánh mì nướng cho tôi mã kiểm tra) không hoạt động đối với tôi. Và khi tôi nhấn nút quay lại thì không có gì xảy ra. –

+0

Sai lầm của tôi, tôi không gọi Toast.show(). Mã làm việc. Thanx @skorulis –

3

Như schwiz đã chỉ ra, bạn sẽ muốn ghi đè phương thức onBackPressed() trong lớp hoạt động của mình (http://developer.android.com/reference/android/app/Activity.html#onBackPressed()).

Tôi chỉ muốn thêm rằng nếu bạn muốn ở một giai đoạn nào đó tiếp tục hoặc truy cập hoạt động chuẩn sau (sau khi nói, hiển thị hộp thoại), thì bạn chỉ cần gọi super.onBackPressed() hoặc ActivityName.super.onBackPressed() từ bất kỳ nơi nào trong Hoạt động.

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