hide和show方法实现fragment切换且不重新实例化
2016-12-07 17:22
411 查看
Fragmnet在开发中用的比较多,常见的有两种切换方式。一种是replace方式,就是重新创建fragment替换掉之前的fragment。这种方式会重新实例化走生命周期,会刷新界面的数据。但是,这样会有一个问题:每次切换的时候,Fragment都会重新实例化,重新加载一边数据,这样非常消耗性能和用户的数据流量。另一种是通过hide和show方式来实现切换,通过这种方式能保留状态,能避免重新实例化而带来的“重新加载一边数据”、“消耗数据流量”的问题。下面介绍一下通过hide和show方法实现fragment切换且不重新实例化。
ps:不是说hide和show方式好,一定要用这种,选择哪种切换方式需要根据项目需求和实际情况。
下面上代码:
然后直接在onCreate()里调用
ps:不是说hide和show方式好,一定要用这种,选择哪种切换方式需要根据项目需求和实际情况。
下面上代码:
/** * * @param from 当前的 * * @param to 要显示的 * */ public void switchContent(Fragment from, Fragment to) { FragmentManager fm = getSupportFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); if (fromFragment == null) { transaction.add(R.id.contactContent, to).commit(); fromFragment = to; } else if (fromFragment != to) { fromFragment = to; if (!to.isAdded()) { // 先判断是否被add过 transaction.hide(from).add(R.id.contactContent, to).commit(); // 隐藏当前的fragment,add下一个到Activity中 } else { transaction.hide(from).show(to).commit(); // 隐藏当前的fragment,显示下一个 } } }
然后直接在onCreate()里调用
public class MainActivity extends Activity { private Fragment fromFragment; private Fragment myFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(myFragment==null){ myFragment=new Fragment(); } switchContent(fromFragment, myFragment); } }
相关文章推荐
- 使用hide和show方法来实现fragment的切换时当需要fragment重新刷新
- fragment切换 hide和show之后重新刷新数据的方法
- Android 使用hide()和show()方法切换Fragment时的问题
- Fragment hide/show 切换 走的方法onHiddenChanged(boolean hidden)
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- 关于切换Fragment的不重新实例化的解决方法
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- 多个Fragment切换时不重新实例化的方法
- Fragment通过hide、show实现动态切换
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- 底部多个按钮切换Fragment,不重新实例化简单方法!
- Android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态
- 让多个Fragment 切换时不重新实例化
- 让多个Fragment 切换时不重新实例化
- 让多个Fragment 切换时不重新实例化
- 让多个Fragment 切换时不重新实例化
- Fragment hide,show方法后,会调用什么方法
- 让多个Fragment 切换时不重新实例化
- 让多个Fragment 切换时不重新实例化