2013-03-19 28 views
7

Tôi có 4 hoạt động trên Android. Hãy gọi cho họ A, B, C, D.Xóa hoạt động 2 và 3 khỏi ngăn xếp lại khi bắt đầu hoạt động 4

Luồng bình thường là A => B => C => D. Tuy nhiên, khi tôi nhập D Tôi muốn xóa BC từ ngăn xếp lại.

Có thể giải quyết được không?

Lưu ý rằng nếu người dùng là ở C và ép lại, B nên vẫn được hiển thị!

Chỉnh sửa: Bắt đầu hoạt động Một lần nữa với CLEAR_TOP đã gọi onCreate lần nữa trên Hoạt động A mà tôi không muốn. Bất kỳ giải pháp nào khác?

Trả lời

-1

FLAG_ACTIVITY_CLEAR_TOP xóa Hoạt động ngăn xếp của bạn, bạn có thể sử dụng nó như mã dưới đây:

intent = new Intent(this, YourActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
StartActivity(intent); 
+0

Cảm ơn. Nó quá dễ dàng :) – Sunkas

+0

Có một chút nhầm lẫn trước câu trả lời của bạn. Nhưng YourActivity là ** A ** trong trường hợp của tôi, và được gọi trong onBackPressed() trong Activity ** D **. – Sunkas

+0

Làm như vậy kết quả trong onCreate được gọi lại trên hoạt động ** A ** mà tôi không muốn. Tôi muốn trạng thái được hiển thị, tương tự như cách hoạt động tiêu chuẩn khi nhấp vào Quay lại. – Sunkas

0
+0

Đây sẽ là giải pháp tôi đã hy vọng, nhưng nó không hoạt động. Sau khi gọi kết thúc() trong Hoạt động ** D ** Tôi vừa kết thúc ở Hoạt động ** C **. – Sunkas

3

Tôi biết đây là một câu hỏi cũ, nhưng gần đây tôi có cùng một vấn đề và không thể tìm thấy giải pháp ở bất cứ đâu. Giải pháp duy nhất tôi có thể có được để làm việc là một chút của một hack:

Bắt đầu C từ B sử dụng startActivityForResult.

Intent intent=new Intent(this,C.class); 
startActivityForResult(intent,REQUEST_CODE); 

Trong Hoạt động C, tạo mục đích cho hoạt động D và thiết lập nó như là một kết quả:

Intent intent=new Intent(this,D.class); 
setResult(RESULT_OK,intent) 
finish(); 

Trong Hoạt động B, kết thúc và bắt đầu ý định trở về từ Hoạt động C:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode==REQUEST_CODE) { 
     finish(); 
     startActivity(data); 
    } 
} 
.210

Tại thời điểm này, cả hai đều hoạt động BC sẽ được hoàn thành và hoạt động ngăn xếp sẽ A => D

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