2012-01-26 19 views
9
  1. Hoạt động 1 hiển thị. Nhấn một nút và Hoạt động 2 sẽ mở ra.
  2. Hoạt động 2 bổ sung thêm đoạn A đến bản thân (và chồng trở lại) và nó sẽ hiển thị tốt
  3. Nhấn một nút trong quá trình chuyển đổi đoạn khác đoạn, B
  4. Bấm Back. Chẳng có gì xảy ra. Huh? Báo chí Back dường như bị hấp thụ và không hoạt động, màn hình vẫn giữ nguyên.
  5. Nhấn Quay lại lần thứ hai, nó sẽ hoàn nguyên về Hoạt động 1, như mong đợi.

Tại sao đoạn của tôi không được hiển thị ở bước 4? Tôi đã thêm mảnh vỡ vào ngăn xếp phía sau, vậy tại sao (khi nút Quay lại có vẻ nhận thức được sự tồn tại của nó) nó có hiển thị đoạn không?Tại sao Fragment.addToBackStack() khiến nút Quay lại không làm gì cả?

Dưới đây là đoạn code Tôi đang sử dụng trong Hoạt động 2 để mở Fragment A.

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
    setContentView(R.layout.act_profile_edit); 
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
    transaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right); 
    transaction.addToBackStack(null); 
    transaction.add(android.R.id.content, new MyFragment()); 
    transaction.commit(); 
} 

Và đây là đoạn code để mở Fragment B

FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
    transaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right); 
    transaction.add(android.R.id.content, new MyOtherFragment()); 
    transaction.commit(); 

Trả lời

10

Bạn đã thử transaction.replace(...) thay vì transaction.add(...)? Cần làm việc. Tôi đoán vì nếu bạn chỉ cần thêm một mảnh trên một mảnh khác, nó không thấy giao dịch như muốn quay trở lại fro Fragment A.

EDIT Câu trả lời thực tế cho câu hỏi nằm bên dưới trong phần bình luận : addToBackStack() nên được sử dụng trên đoạn đó là thay thế, không được thay thế.

+0

Điều này không hữu ích. Nếu tôi sử dụng thay thế ban đầu (thay vì thêm) không có mảnh để thay thế, vì vậy tôi mong đợi nó sẽ hoạt động như cũ. Nếu tôi được sử dụng thay thế để hiển thị mảnh B, nó sẽ ghi đè lên một trong những tôi muốn mọi người sử dụng Quay lại để trở lại, do đó sẽ không giúp đỡ. –

+0

okay, vậy hai đoạn này có thuộc các khung khác nhau không? –

+0

và mã của bạn để đặt đoạn B là gì? –

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