2013-02-20 32 views
43

Tôi có một hoạt động A, gọi là đoạn Bf, gọi là đoạn Cf. Tôi muốn Bf được đặt trong backstack khi Cf được gọi là để người dùng có thể điều hướng trở lại nó. Tuy nhiên, nếu một nút cụ thể được nhấn trong Cf, tôi muốn Bf được loại bỏ khỏi backstack. Điều này có thể không?Làm thế nào để phát đoạn rời khỏi backstack

Tôi thấy rằng có một hàm popBackStack(). Tuy nhiên, tôi hơi bối rối về cách làm việc này. Có an toàn để sử dụng chức năng này không? Có khả năng là một hoạt động từ một ứng dụng khác sẽ được đưa vào sau khi Bf trên backstack?

Ngoài ra, có cách nào để thay đổi savedInstanceState của đoạn trên backstack không?

Tôi không thể tìm ra cách thực hiện thử nghiệm mạnh mẽ trên backstack bằng trình mô phỏng.

+0

Tránh sử dụng lại đống! nó không thực sự giúp với hiệu quả tổng thể! sử dụng thay thế đồng bằng() hoặc thậm chí tốt hơn xóa/thêm mỗi lần bạn muốn điều hướng! Kiểm tra bài đăng của tôi trên http://stackoverflow.com/questions/5802141/is-this-the-right-way-to-clean-up-fragment-back-stack-when-leaving-a-deeply-nest/26093368# 26093368 –

+0

@stack_ved không phải là một ý tưởng hay. BackStacks là một điều tuyệt vời. Btw Tôi không thể xem bài đăng của bạn. Tôi đoán nó đã được downvoted. : P – Sufian

Trả lời

86

Bạn có thể bật phân đoạn theo tên. Trong khi thêm phân đoạn vào ngăn xếp lại, chỉ cần đặt tên cho chúng.

fragmentTransaction.addToBackStack("fragB"); 
fragmentTransaction.addToBackStack("fragC"); 

Sau đó, trong Fragment_C, pop ngăn xếp trở lại sử dụng tên ví dụ .. fragB và bao gồm POP_BACK_STACK_INCLUSIVE

someButtonInC.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     FragmentManager fm = getActivity() 
       .getSupportFragmentManager(); 
     fm.popBackStack ("fragB", FragmentManager.POP_BACK_STACK_INCLUSIVE); 
    } 
}); 
+9

Nó sẽ hoạt động ngay cả khi chúng ta cũng không truyền tham số nào trong phương thức fm.popBackStack. fm.popBackStack(); – Kailas

+0

Tôi nên làm gì nếu muốn nhấn nút quay lại? – Akshay

+0

@Akki nếu bạn đang sử dụng thêm vào backstack nó sẽ bật đoạn cuối cùng được thêm vào khi bạn nhấn mục điều hướng trở lại. Vì vậy, không cần thêm bước nào để thực hiện điều hướng bình thường trở lại. Chỉ có thời gian bạn cần ghi đè trên nút quay lại được nhấn là khi bạn muốn làm điều gì đó khác với điều hướng quay lại một bước thông thường. – ocross

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