2016-06-15 4 views
0

in FragmentTabHost Wenn Tabs wählen onActivityCreated Wieder erstellen And All Thing zuletzt aktualisiert und neueFragmentTabHost onChoose Tab onActivityCreate Wieder

Wie dieses Problem beheben? nicht neu erstellen?

Was ist anders von Fragment LifeCycle in ViewPager und FragmentTabHost?

enter image description here

Warum wieder FragmentShop erstellen?

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); 



    } 
} 

Über Fragment Instanz(): diese Methode gerade Seite erstellen Für ViewPager ist hier 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; 
    } 
} 

Antwort

0

Schließlich Lösung:

Hier ist Fragment LifeCycle: https://developer.android.com/guide/components/fragments.html#Creating

Nach onDestroyView Ihr alle Ansicht zerstören, aber nicht Ihre Variable

I Do gerade diese 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 Sie Ju st brauchen, um wieder alle Ansicht erstellen und Parameter und Don`t Neue Daten und ich habe gerade Listview und Floating-Knopf

Dies But Not For Me helfen: https://inthecheesefactory.com/blog/fragment-state-saving-best-practices/en

0

versuchen diese.

 public FragmentMarket getTestFragment() { 
      if (marketFragment == null) { 
       marketFragment = new FragmentMarket(); 
      } 

      return marketFragment; 
     } 
+0

TNX @}; -, aber hat nicht funktioniert – Criss

Verwandte Themen