fragment

标签: fragment

Activity重建导致Fragment多次初始化问题探讨

0x1 起因 我们先来看段代码(仅关键代码) public class TestActivity extends FragmentActivity { ... protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.xxxx); getSupportFragmentManager().beginTransaction() .replace(R.id.content, new TestFragment()) .commit(); } ... } public class TestFragment extends Fragment { public TestFragment() { Log.d("TestFragment", "new TestFragment"); } ... } 运行,并切换横竖屏 或者 切换系统语言,请问TestFragment的构造函数会执行几次呢?(注意:Manifest中没有配置configChanges属性) 06-01 10:34:37.

阅读全文...

FragmentTabHost更新当前选中的fragment

只能要能去当前fragment对象,更新fragment神马的都不是问题, 所以我们当前的目标就是获取fragment对象 因为配置FragmentTabHost切换fragment用的class,没有对象,所以不能直接获取对象 获取方法如下 Fragment fragment = getSupportFragmentManager().findFragmentByTag("0"); 那么问题来了,tag从那里来的呢 int count = fragmentArray.length; for (int i = 0; i < count; i++) { TabHost.TabSpec tabSpec = mTabHost.newTabSpec(i + "").setIndicator(i + ""); mTabHost.addTab(tabSpec, fragmentArray[i], null); } 再TabHost.TabSpec中设置的 获得了fragment对象就可以只想fragment类里面的方法了

阅读全文...

FragmentTabHost切换Fragment时避免UI重新加载

每次FragmentTabHost切换fragment时会调用onCreateView()重绘UI。  解决方法,在fragment onCreateView 里缓存View:  private View rootView;// 缓存Fragment view @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.i(TAG, "onCreateView"); if (rootView == null) { rootView = inflater.inflate(R.layout.fragment_1, null); } // 缓存的rootView需要判断是否已经被加过parent,如果有parent需要从parent删除,要不然会发生这个rootview已经有parent的错误。 ViewGroup parent = (ViewGroup) rootView.getParent(); if (parent != null) { parent.removeView(rootView)

阅读全文...

Fragment里面的Viewpaper不显示内容

转自:http://blog.csdn.net/cshxql/article/details/22788343 最近fragment越来越火了,ViewPager也越来越广泛使用了,群里很多朋友就不约而同的遇到了一个奇葩的问题,fragment里面放viewpager有些时候会不会出现内容。所以今天把这个解决方案分享一下,希望大家能看到,不要浪费太多时间在这个问题上。 其实后来看到有人说是fragment里面嵌套fragment导致的。 这个问题我当初遇到的时候花了三个晚上才找到解决方案,纳入我的疑难杂症分类收藏中! 我的情况是两个地方用同一个fragment,这个fragment里面包含ViewPager,此时一般来说第一个显示的fragment会显示内容,第二个就不会显示了。在调试中打了Log看了,没显示内容的在Viewpager的getitem中并不会执行。 其实这个问题很简单,只需要在new FragmentPagerAdapter的时候传进去的fragmentManager不要使用getFragmentManager,而使用getChildFragmentManager()即可解决此问题。 具体原因估计大家看到解决方案也能猜出个大概来,也就是子fragment用父fragment的FragmentManager了,然后不会出来内容

阅读全文...