2012-04-03 31 views
8

Tôi có Class A chạy hoạt động qua startActivityForResult bằng cách chuyển Intent cho nó. Trong lớp khác, hãy nói rằng B tôi nhận được Intent và tạo lại hoạt động của nó. Làm cách nào để tôi có thể nghe các sự kiện cho hoạt động đó, ví dụ: hoạt động đã được bắt đầu cho kết quả đang chạy và người dùng nhấn nút "quay lại" để tôi muốn thực hiện một số hành động. Tôi có thể làm như thế nào? Cảm ơn bạn trước.Cách đặt onBackButton listener thành hoạt động

Hoạt động trong đó tôi tạo lại cá thể đối tượng không bắt nguồn từ lớp Hoạt động. Nó chỉ là ACTIVITY. Vì vậy, tôi chỉ có đối tượng. là có cách nào để làm những thứ như vậy với trường hợp của lớp học nhưng không phải là một lớp học?

Trả lời

1

Bạn có thể ghi đè onDestroy và đặt mã ở đó.

Một khả năng khác (và có thể phù hợp với nhu cầu của bạn tốt hơn) là ghi đè onBackPressed.

+2

Hệ thống này sẽ không gọi hệ thống này nếu Hoạt động bị hủy, ví dụ, do bộ nhớ ngoài? Tôi không chắc chắn đây là những gì OP là sau. –

+0

Bạn có một điểm, mặc dù tôi nghĩ rằng nói chung nó là tốt hơn để theo dõi vòng đời hoạt động và không bị ràng buộc với các phím. – MByD

+0

Vâng, điều đó phụ thuộc vào yêu cầu là gì. Trong một trong các ứng dụng của tôi, tôi có một hoạt động, chế độ xem có thay đổi dựa trên hành động của người dùng. Khi nhấn phím "back", tôi sẽ khôi phục trạng thái ban đầu (nếu tôi đang ở trạng thái đã thay đổi) hoặc kết thúc hoạt động. Trong trường hợp này, vòng đời sẽ không giúp tôi. –

4

Trong hoạt động, nơi bạn muốn đóng vai trò vào nút "trở lại", chỉ cần ghi đè onKeyDown (hoặc onKeyUp) Phương pháp:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //do whatever you need for the hardware 'back' button 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

Hãy ghi nhớ rằng nếu bạn muốn "trở lại" chìa khóa để vẫn kết thúc hoạt động của bạn, sau đó bạn sẽ cần phải bao gồm

setResult(result); //if you want to pass a result to activity A 
finish(); 

nơi nào đó trong đó có điều kiện trước khi return true;

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