2014-06-19 14 views
6

Trong hoạt động của tôi, tôi đã thêm đoạn bằng cách sử dụng mã sau đây.Hoạt ảnh phân đoạn Android được lặp lại một lần nữa trên Định hướng thay đổi

FragmentTransaction ft = getFragmentManager().beginTransaction(); 
ft.setCustomAnimations(R.anim.right_to_left_in, R.anim.right_to_left_exit,R.anim.left_to_right_in,R.anim.left_to_right_exit); 
DetailsFragment newFragment = DetailsFragment.newInstance(); 
ft.replace(R.id.details_fragment_container, newFragment, "detailFragment"); 
ft.commit(); 

Phân đoạn đang nhập, thoát, xuất hiện với hoạt ảnh đúng cách. Nhưng khi tôi định hướng thiết bị, Trình quản lý phân mảnh đang cố gắng thêm đoạn có cùng hình động. Nó có vẻ rất kỳ quặc. Tôi không muốn hoạt ảnh khi người dùng định hướng thiết bị.

Tôi không muốn thêm onConfigChanges='orientation' trong tệp kê khai vì tôi muốn thay đổi thiết kế bố cục của phân đoạn theo hướng.

Trả lời

0

Android tự động đính kèm đoạn hiện tại vào hoạt động trong trường hợp thay đổi định hướng. Vì vậy, bạn không phải làm điều đó bằng tay. Bạn có thể kiểm tra biến savedInstanceState trong onCreate phương pháp hoạt động for null và thay thế một mảnh với hình ảnh động chỉ trong trường hợp nếu nó là null:

if (savedInstanceState == null) { 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.setCustomAnimations(R.anim.right_to_left_in, R.anim.right_to_left_exit,R.anim.left_to_right_in,R.anim.left_to_right_exit); 
    DetailsFragment newFragment = DetailsFragment.newInstance(); 
    ft.replace(R.id.details_fragment_container, newFragment, "detailFragment"); 
    ft.commit(); 
} 
+0

Cảm ơn câu trả lời của bạn. Hoạt động của tôi đã có logic này. Tôi không bao giờ thêm mảnh vỡ nữa.Khi trình quản lý phân mảnh cố gắng đính kèm lại đoạn đó theo hướng, nó áp dụng các hình động đã được lưu trữ trong giao dịch. (Ie mà tôi đặt khi đoạn được thêm vào) –

3

Cách duy nhất tôi có thể tránh điều này là để không giữ lại trường hợp đoạn. Trong phương pháp 's onCreate sử dụng setRetainInstance(false);

+0

Cảm ơn câu trả lời.Tôi sẽ kiểm tra và cập nhật! –

+0

Kudo! Làm việc của nó! Tôi đang kiểm tra các tác dụng phụ khác (Có gì ở đó không !?) trong khi thiết lập setRetainInstance (sai); –

+1

Vấn đề là đoạn sẽ không được giữ lại - đọc thêm tại đây: http://stackoverflow.com/a/11318942/667202 – AdamVe

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