java共享元素转换不适用于FragmentTransaction。appcompat支持的库版本v7:23.2.0中的add()
执行FragmentTransaction时,共享元素转换在片段中不起作用。使用appcompat最新版本添加(),同时使用replace()可以正常工作。当我将appcompat降级到v7:23.1版本时,它正在工作。我发现这个问题与appcompact支持的版本有关,但我还没有找到任何解决方案
我用于转换的代码是
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// set transitions
startFragement.setSharedElementReturnTransition(TransitionInflater.from(
activity).inflateTransition(R.transition.change_image_trans));
startFragement.setExitTransition(TransitionInflater.from(
activity).inflateTransition(安卓.R.transition.fade));
endFragment.setSharedElementEnterTransition(TransitionInflater.from(
activity).inflateTransition(R.transition.change_image_trans));
endFragment.setEnterTransition(TransitionInflater.from(
activity).inflateTransition(安卓.R.transition.fade));
// send bunddle string of transition_name in endfragment
/*Bundle bundle = new Bundle();
bundle.putString(GistConstants.TRANSITION_NAME, transition_name);
endFragment.setArguments(bundle);*/
FragmentTransaction fragmentTransaction = ((AppCompatActivity)activity).getSupportFragmentManager().beginTransaction();
Fragment currentFragment = ((FragmentActivity)activity).getSupportFragmentManager().findFragmentById(R.id.main_content);
if(currentFragment!= null) {
fragmentTransaction.hide(currentFragment);
}
if(isAddToStack){
fragmentTransaction.addToBackStack(endFragment.getClass().getName());
}
fragmentTransaction.addSharedElement(transitionImageView, transition_name);
fragmentTransaction.add(R.id.main_content, endFragment, endFragment.getClass().getName());
//fragmentTransaction.add(contentId, endFragment,endFragment.getClass().getName());
// fragmentTransaction.replace(R.id.main_content, endFragment);
fragmentTransaction.commitAllowingStateLoss();
} else {
switchFragmentAdd(activity, endFragment, isAddToStack, isAnimate);
}
# 1 楼答案
它在v7:25.1.1中起作用,但返回转换不起作用: