版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wgj99991111/article/details/52336030
最近在使用fragment,现将其切换时的一些小问题总结如下:
首先是代码:
FragmentManager fm1 = getSupportFragmentManager();
FragmentTransaction transaction = fm1.beginTransaction();
mArticleDetailFragment = new ArticleDetailFragment();
mArticleDetailFragment.setUrl(event.getsUrl());
transaction.setCustomAnimations(
R.animator.push_left_in,
R.animator.push_left_out,
R.animator.push_right_in,
R.animator.push_right_out);
//切换动画是由进入的fragment和退出的fragment共同实现的,这里的四个参数分别表示
//第一个参数:进入切换时将要进入的fragment的进入动画
//第二个参数:进入切换时将要退出的fragment的退出动画
//第三个参数:退出切换时将要进入的fragment的进入动画
//第四个参数:退出切换时将要退出的fragment的退出动画
transaction.add(R.id.id_content,mArticleDetailFragment);
transaction.remove(mArticlesFragment);
transaction.addToBackStack(null);
//在这里将原来的fragment放在后方的栈里面,这样但点击退出时就能回退到之前的fragment页面。
transaction.commit();
注意事项:
1)可以使用setCustomAnimations设置切换动画,注意切换动画四个参数的含义(在代码注释中有说明)。
2)设置切换动画的代码应该放在fragment的add、remove和replace操作之前,否则不起作用。
3)在切换时不直接使用replace,而使用add,之后将替换下来的fragment放在栈里,这样在新的fragment页面用户回退时,就会退到之前的fragment页面。感觉实际需要可以这样使用。