2012-02-01 35 views
5

Trong ứng dụng của tôi, tôi có một hoạt động và tôi đang thêm hai đoạn tại thời gian chạy. Tôi cần trao đổi hai đoạn này cùng một lúc. Đoạn 1 bao gồm một nút và tôi muốn khi tôi bấm vào nút mảnh 1 di chuyển sang bên phải của màn hình và mảnh khác ở phía bên trái của hoạt động.Hoán đổi hai đoạn đồng thời

Trong phương thức onClick của nút tôi đã cố gắng một cái gì đó như thế này

@Override 
    public void onClick(View v) { 
     FragmentTransaction ft = getFragmentManager().beginTransaction(); 
     Fragment newFragment = getFragmentManager().findFragmentById(R.id.pageA); 
     ft.remove(newFragment); 
     Fragment newFragmentB = getFragmentManager().findFragmentById(R.id.pageB); 
     ft.remove(newFragmentB); 
     ft.add(R.id.pageB, newFragment); 
     ft.add(R.id.pageA, newFragmentB); 
     ft.addToBackStack(null); 
     ft.commit(); 
    } 

Nhưng tôi đang nhận được lỗi sau

java.lang.IllegalStateException: Can't change container ID of fragment PageA{40653da0 #0 id=0x7f060001}: was 2131099649 now 2131099650 

Tôi muốn một cái gì đó như thế này khi tôi nhấp vào nút trên Trang A thì Vị trí của Trang A và PageB nên trao đổi với nhau.

UI of the fragment

Trả lời

0

Tôi có một vấn đề tương tự (IllegalStateException: Can't change container ID of Fragment) và tôi giải quyết bằng cách trao đổi các container thay vì các mảnh vỡ ... Tuy nhiên tôi vẫn không có đầu mối về việc liệu nó possibile để trao đổi trực tiếp mảnh vỡ. Như tôi đã viết trong bài nói trên, nó dường như chỉ hoạt động trên ics!

+0

tức là những gì tôi cũng thấy nó không hoạt động trên tổ ong. Tôi chưa bao giờ thử nó trên ICS. sau đó nó có thể là một vấn đề Android –

+0

Nó hoạt động trên ICS miễn là bạn loại bỏ và thêm một frag trong hai giao dịch riêng biệt (có một cái nhìn tại liên kết ở trên để xem nó được thực hiện như thế nào) – Matthew

0

Tôi đã đăng giải pháp cho vấn đề này cho một câu hỏi tương tự. Cách tiếp cận của tôi là tái tạo mảnh vỡ, nhưng giữ trạng thái bằng cách lưu nó trước và áp dụng lại nó cho cá thể mới.

Xem https://stackoverflow.com/a/14951987/599614.

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