Fragment 切换问题

    1. public void switchContent(Fragment fragment) {
    2. if(mContent != fragment) {
    3. mContent = fragment;
    4. mFragmentMan.beginTransaction()
    5.                .setCustomAnimations(android.R.anim.fade_in, R.anim.slide_out)  
    6. .replace(R.id.content_frame, fragment) // 替换Fragment,实现切换
    7. .commit();
    8. }
    9. }
    10. 每次切换时此个Fragmnet都会被实例化,这种方式使用时适合只做一次处理,永久性的替换。如果它的切换平率过高的话,不建议使用replace()忒费内存
    11. 建议使用:切换方式是add(),切换时hide(),add()另一个Fragment;再次切换时,只需hide()当前,show()另一个。
      这样就能做到多个Fragment切换不重新实例化:

/*
* 设置Fragment选择
*/
private void setFragmentSelection(int index) {
ft = fm.beginTransaction();
initFragment(ft);  每次切换时都隐藏刚才显示的

switch (index) {
// 当选择的是私人的时候
case R.id.rb_personGroup:
if (fragment_Person == null) {
fragment_Person = new ULFragment_Person();
ft.add(R.id.userlist_fragement_main, fragment_Person);
} else {
// 重建view视图,附加到UI上并显示。
ft.show(fragment_Person);
}
break;
// 当选择的是共享组的时候
case R.id.rb_sharedGroup:
if (fragment_Shared == null) {
fragment_Shared = new ULFragment_Shared();
ft.add(R.id.userlist_fragement_main, fragment_Shared);
} else {
// 重建view视图,附加到UI上并显示。
ft.show(fragment_Shared);
}
break;

}
ft.commit();
}

/*
* 初始化Fragment 记性判断fragment是否隐藏。
*/
private void initFragment(FragmentTransaction ft2) {

if (fragment_Person != null) {
// 会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。
ft2.hide(fragment_Person);
}
if (fragment_Shared != null) {
ft2.hide(fragment_Shared);
}
}

时间: 2024-10-09 09:59:45

Fragment 切换问题的相关文章

解决 viewpager fragment 切换 Fragment被销毁的问题

当我们用FragmentViewPagerAdapter和ViewPager来完成滑动切换选项卡时,效果非常不错,但是后来遇到一个问题,FragmentA切换到FragmentB,再滑到FragmentC时,FragmentA的状态数据已经不予保存了,再次滑动到FragmentB时,FragmentA的oncreateView方法会重新调用,如果有网络请求,将会是非常蛋疼,在网上找了半天,最后看到viewpager中有个这样的方法setOffscreenPageLimit,设置为2,然后再一试,

【Fragment精深系列7】Fragment切换优化

一.Fragment+RadioGroup ??在项目中需要进行Fragment的切换,一直都是用replace()方法来替换Fragment:然后总感觉切换的时候有些卡顿. 1.以前的代码: radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int checkI

Fragment切换动画

题外话: 如何把一个 "小view" 或者 "小fragment" 覆盖到一个 "全屏view" 之上(见下图). 方法一(FrameLayout + layout_marginTop ): <FrameLayout          android:layout_width="match_parent"         android:layout_height="match_parent">

MapView 和ViewPager Fragment切换黑屏问题解决方案

在项目中使用的是高德地图,放置MapView的Fragment和其他Fragment放置一个ViewPager中切换:当从MapView的Fragment切换到其他Fragment或者从其他Fragment切换到MapView就会产生闪黑边.网上有说什么设置白色背景或者设置Activity style透明.经尝试设置Activity style透明是可以解决闪黑边问题的,但是Activity透明后会看到Launcher桌面.所以这种方式也是的. 我通过修改ViewPager的过渡方式完美解决闪黑

【Android】保存Fragment切换状态

前言 一般频繁切换Fragment会导致频繁的释放和创建,如果Fragment比较臃肿体验就非常不好了,这里分享一个方法. 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 一.应用场景 1.不使用ViewPager 2.不能用replace来切换Fragment,会导致Fragment释放(调用onDestroyView) 二.实现 1.xml <LinearLayout x

让多个Fragment 切换时不重新实例化

转自:http://www.yrom.net/blog/2013/03/10/fragment-switch-not-restart/ 让多个Fragment 切换时不重新实例化 在项目中需要进行Fragment的切换,一直都是用replace()方法来替换Fragment: 1 2 3 4 5 6 7 8 9 public void switchContent(Fragment fragment) { if(mContent != fragment) { mContent = fragment

fragment切换刷新 及下拉刷新

此工程较BaiduLocationXMLFragmentDB相比:1.滑动fragment自动刷新该fragment2.下拉刷新fragment,上拉暂未实现 a.fragment切换刷新 1 . 由于运行进入是fragment1,会默认加载fragment2,但是加载的时候,获取的得到地址天气信息并没有存入数据库中,所以切换到fragment2时不会执行OncreateView再次加载fragment2(刷新方法写在OncreateView),从而不会显示刚存入数据库的数据 首先说明下view

两层Fragment嵌套,外层Fragment切换时内层Fragment不显示内容

尊重他人劳动成果,转载请说明出处:http://blog.csdn.net/bingospunky 需求 在搭界面有这么样一个需求:需要两层的Fragment嵌套,内层需要滑动切换效果,外层界面不需要滑动效果.那么内层使用ViewPager切换,外层就使用replace切换.这样搭出来的界面不能得到需要的效果,内层的Fragment只有第一次能显示内容,之后切换外层Fragment时,内层Fragent都是空着的. 我再尝试两层Fragment都使用replace切换,这样就能达到效果了.但是项

fragment切换

方法1:replace 在项目中需要进行Fragment的切换,一直都是用replace()方法来替换Fragment: 1 2 3 4 5 6 7 8 9 public void switchContent(Fragment fragment) { if(mContent != fragment) { mContent = fragment; mFragmentMan.beginTransaction() .setCustomAnimations(android.R.anim.fade_in,