2010-03-31 29 views
108

Trong một hoạt động Android cụ thể, tôi muốn bắt đầu một hoạt động mới cho người dùng tại một số thời điểm. Một khi họ rời khỏi hoạt động đầu tiên và đến lần thứ hai, hoạt động đầu tiên là cũ và tôi muốn loại bỏ nó hoàn toàn để nó không thể được truy cập một lần nữa từ nút quay lại.Làm thế nào để giết một hoạt động Android khi rời khỏi nó để nó không thể được truy cập từ nút quay lại?

Cách tốt nhất để thực hiện việc này là gì? Làm thế nào để giết hoặc tiêu diệt hoạt động này ngay lập tức sau khi người dùng đã khởi chạy hoạt động mới?

Trả lời

190

Bạn chỉ cần gọi finish()

Intent intent = new Intent(this, NextActivity.class); 
startActivity(intent); 
finish(); 
+0

Cảm ơn bạn. Để tiến thêm một bước nữa, tôi bắt đầu hoạt động mới từ một cửa sổ đối thoại - liệu mã có hoạt động giống nhau không? – JohnRock

+0

@CaseyB cảm ơn vì điều này .. nhưng tôi muốn biết, tôi có thể gọi phương thức này từ một Dịch vụ nếu có thì làm thế nào? – swiftBoy

+1

Dịch vụ không có Hoạt động có nghĩa là họ sẽ không ở trong ngăn xếp hoạt động để quay lại. Nếu bạn muốn giết một số hoạt động từ dịch vụ của bạn, bạn sẽ có thể gọi myActivity.finish(); – CaseyB

88

Thiết android:noHistory="true" trên hoạt động trong biểu hiện của bạn sẽ loại bỏ một hoạt động từ chồng bất cứ khi nào nó được điều hướng khỏi. xem here

7

Có, tất cả những gì bạn cần làm là gọi kết thúc() trong bất kỳ Hoạt động nào bạn muốn đóng.

4

Viết này trong mỗi "hoạt động mới" sau khi bạn khởi tạo của bạn mới intent->

Intent i = new Intent(this, yourClass.class); 
startActivity(i); 
finish(); 
6

bạn có thể sử dụng:

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
4

Bạn cũng có thể thêm android:noHistory="true" vào thẻ Activity của bạn trong AndroidManifest.xml.

<activity 
      ... 
      android:noHistory="true"> 
</activity> 
0

Thêm thuộc tính này vào hoạt động của bạn trong tệp kê khai. android: noHistory = "true"

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