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.
fragment
标签: fragment
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中onActivityResult不响应
Fragment中onActivityResult不响应的问题。 解决方法就是在Fragment中直接调用startActivityForResult()方法,而不是调用 getActivity().startActivityForResult()。
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了,然后不会出来内容