只能要能去当前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
标签: FragmentTabHost
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)