in FragmentTabHost When Choose Tabs onActivityCreated Create Again And All Thing Refreshed And Create new
How can Fix this ? to dont Create Again ?
What Is Different Of Fragment LifeCycle In ViewPager And FragmentTabHost ?
Why FragmentShop Create Again ?
FragmentShop
public class FragmentShop extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.fragment_shop, null);
return layout;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
lstShop = (ListView) getView().findViewById(R.id.lstShop);
lytPrgBar = (LinearLayout) getView().findViewById(R.id.lytShopprogressBar);
btnFloatAndswipeRefresh();
sendAndGetDataWithListener();
showDotedAnimate();
AnimateBtnFloatOnListScroll();
}
FragmentTabHost
FragmentMarket
public class FragmentMarket extends Fragment {
FragmentTabHost mTabHost;
public static Fragment instance() {
Fragment fragment = new FragmentMarket();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_market, container, false);
mTabHost = (FragmentTabHost) rootView.findViewById(R.id.market_tabhost);
mTabHost.setBackgroundResource(R.color.BlueLight);
mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.market_realtabcontent);
mTabHost.addTab(mTabHost.newTabSpec("sales").setIndicator("خرید و فروش"), FragmentSales.class, null);
mTabHost.addTab(mTabHost.newTabSpec("estate").setIndicator("مشاوران املاک"), FragmentEstate.class, null);
mTabHost.addTab(mTabHost.newTabSpec("shop").setIndicator("معرفی بازار"), FragmentShop.class, null);
mTabHost.getTabWidget().getChildAt(0).getBackground().setColorFilter(R.color.BlueDark, Mode.MULTIPLY);
mTabHost.getTabWidget().getChildAt(1).getBackground().setColorFilter(R.color.BlueDark, Mode.MULTIPLY);
mTabHost.getTabWidget().getChildAt(2).getBackground().setColorFilter(R.color.BlueDark, Mode.MULTIPLY);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
About Fragment instance() : this Method Just Create Page For ViewPager Here Is Adapter :
public class AdapterViewPager extends FragmentPagerAdapter {
public AdapterViewPager(Context context, FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "مارکت";
case 1:
return "مجله امروز";
case 2:
return "رویدادها";
case 3:
return "آخرین اخبار";
case 4:
return "دانش آموزان برتر";
case 5:
return "قرعه کشی و جایزه";
case 6:
return "زیبایی و زشتی های شهر";
case 7:
return "حمایت";
default:
return "آخرین اخبار";
}
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return FragmentMarket.instance();
case 1:
return FragmentMag.instance();
case 2:
return FragmentEvents.instance();
case 3:
return FragmentNews.instance();
case 4:
return FragmentStudent.instance();
case 5:
return FragmentReward.instance();
case 6:
return FragmentGoodBad.instance();
case 7:
return FragmentSupport.instance();
default:
return FragmentNews.instance();
}
}
@Override
public int getCount() {
return 8;
}
}
Finally Solution :
Here is Fragment LifeCycle : https://developer.android.com/guide/components/fragments.html#Creating
After onDestroyView All Your View Destroy But Not Your Variable
I just Do This in FragmentShop
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
lstSales = (ListView) getView().findViewById(R.id.lstSales);
lytPrgBar = (LinearLayout) getView().findViewById(R.id.lytSalesprogressBar);
btnFloatAndswipeRefresh();
showDotedAnimate();
AnimateBtnFloatOnListScroll();
if (salesTitle.isEmpty()) {
sendAndGetDataWithListener();
} else {
arrayStructList.clear();
salesDatalistener.onDataRecivce();
}
}
So You Just Need Create All View Again And Set Parameter And Don`t Get New Data And I Just Have ListView And Floating Button
This Can Help But Not For Me: https://inthecheesefactory.com/blog/fragment-state-saving-best-practices/en