У меня есть фрагмент фрагмента в фрагменте. У меня есть 4 вкладки. Когда я нажимаю вкладки, onCreateView вкладки запускается, хотя я использую транзакцию фрагмента, чтобы скрыть ее?FragmentTabHost запускает onCreateView, хотя фрагмент скрыт
я отлажена и обнаружил, что, когда я нажимаю на вкладку создать на вкладке дома
CreateFragment createFragment = (CreateFragment) fm.findFragmentByTag(CREATE_TAG);
равна нулю, даже если я добавил его в tabHost.addTab?
Как перемещаться между вкладками и не вызывать onCreateView для каждого фрагмента?
Спасибо
Это класс фрагмент
public class TabFragment extends Fragment {
public static final String HOME_TAG = "home";
public static final String CREATE_TAG = "create";
public static final String SEARCH_TAG = "search";
public static final String PROFILE_TAG = "profile";
private MyFragmentTabHost tabHost;
private MyFragmentTabHost.TabInfo tabInfo;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle savedInstanceState){
View view = inflater.inflate(R.layout.fragment_tab, viewGroup, false);
tabHost = (MyFragmentTabHost) view.findViewById(android.R.id.tabhost);
tabHost.setup(getActivity(), getChildFragmentManager(), android.R.id.tabcontent);
tabHost.addTab(tabHost.newTabSpec(HOME_TAG).setIndicator(getString(R.string.tab_home)), HomeFragment.class, null);
tabHost.addTab(tabHost.newTabSpec(CREATE_TAG).setIndicator(getString(R.string.tab_create)), CreateFragment.class, null);
tabHost.addTab(tabHost.newTabSpec(SEARCH_TAG).setIndicator(getString(R.string.tab_search)), CreateFragment.class, null);
tabHost.addTab(tabHost.newTabSpec(PROFILE_TAG).setIndicator(getString(R.string.tab_profile)), CreateFragment.class, null);
MyFragmentTabHost.OnTabChangeListener tabListener = new MyFragmentTabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String s) {
FragmentManager fm = getChildFragmentManager();
HomeFragment homeFragment = (HomeFragment) fm.findFragmentByTag(HOME_TAG);
CreateFragment createFragment = (CreateFragment) fm.findFragmentByTag(CREATE_TAG);
FragmentTransaction ft = fm.beginTransaction();
if(s.equalsIgnoreCase(HOME_TAG)){
if(homeFragment == null)
ft.add(R.id.tabcontent, new HomeFragment(), HOME_TAG);
else{
if(createFragment != null)
ft.hide(createFragment);
ft.show(homeFragment);
}
}
else if(s.equalsIgnoreCase(CREATE_TAG)){
if(createFragment == null)
ft.add(R.id.tabcontent, new CreateFragment(), CREATE_TAG);
else{
if(homeFragment != null)
ft.hide(homeFragment);
ft.show(createFragment);
}
}
ft.commit();
}
};
tabHost.setOnTabChangedListener(tabListener);
return view;
}
}