5

Trong khi thay thế phân đoạn, tôi đang sử dụng Hoạt ảnh trang trình bày có sẵn cho phiên bản lollipop android. Nó hoạt động như mong đợi cho sự thay thế đặc biệt này, nhưng khi nhấn nút quay lại, đầu tiên bật lại đoạn hiện tại & sau đó đảo ngược hoạt ảnh nhập (trượt ra) được thực hiện.lollipop android - setentertransition() cho đoạn không hoạt động bình thường khi thoát

private void replaceContentFrameByFragment(Fragment replaceBy, String replaceByFragmentTag) { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      Slide slide = new Slide(Gravity.BOTTOM); 
      slide.setDuration(1000); 
      replaceBy.setEnterTransition(slide); 
    } 
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(R.id.content_frame, replaceBy, replaceByFragmentTag); 
    fragmentTransaction.addToBackStack(null); 
    fragmentTransaction.commitAllowingStateLoss(); 
} 

Vì vậy, làm thế nào để buộc đoạn phát lại chỉ sau khi hoạt ảnh đảo ngược của trang trình bày kết thúc? Tôi nhận thấy rằng hoạt động có phương thức finishAfterTransition() được cung cấp. Có cái gì đó tương tự cho frgament?

+0

đọc thêm về quá trình chuyển đổi ở đây: www.androiddesignpatterns.com/2014/12/activity-fragment-content-transitions-in-depth-part2.html – pskink

+0

Thêm chuyển lợi nhuận riêng biệt cũng show cùng một hành vi. Slide slide = Slide mới (Gravity.BOTTOM); slide.setDuration (1000); replaceBy.setEnterTransition (trang trình bày); \t \t slide = new Slide (Gravity.BOTTOM); slide.setDuration (1000); replaceBy.setReturnTransition (trang trình bày); – Ankur

+0

Bạn có thể đăng ảnh chụp màn hình về hành vi bạn đang chứng kiến ​​không (thật khó để nói chính xác những gì bạn mô tả). Android Studio có công cụ chụp ảnh màn hình có thể hữu ích. –

Trả lời

0

Tôi đã có cùng một vấn đề với xấp xỉ cùng một khuôn mẫu và đã có thể để có được xung quanh nó bằng cách đăng mảnh CHUYỂN TIẾP CỦA TÔI:

new Handler().post(new Runnable() { 
    @Override 
    public void run() { 
     page.setEnterTransition(new Slide()); 
     getFragmentManager() 
       .beginTransaction() 
       .replace(R.id.root_layout, page, "current") 
       .commit(); 
    } 
}); 

Không chắc tại sao điều này giải quyết vấn đề (hoặc nếu điều này là tuyệt đối đúng giải pháp), nhưng nó đã làm việc cho tôi.

0

Tôi đã gặp vấn đề tương tự, onReturn from Fragment B -> A, Fragment B dường như đang thực hiện chuyển đổi trang trình bày bổ sung. Để có được xung quanh nó, tôi đặt trong một chuyển đổi mờ dần cho setReturnTransition() của một thời gian ngắn hơn so với slide trông khá tốt (vì nó hòa tan vào mảnh trước đó). Mã cho điều này là:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    Slide slideRight = new Slide(Gravity.RIGHT); 
    slideRight.setDuration(200); 
    fragment.setEnterTransition(slideRight); 
    Fade fade = new Fade(); 
    fade.setDuration(100); 
    fragment.setReturnTransition(fade); 
} 
Các vấn đề liên quan