2016-06-15 5 views
0

タブを選択して再度作成し、すべての事リフレッシュし、これを修正することができますどのように新しいFragmentTabHost onChooseタブonActivityCreate再び

を作成onActivityCreated?再び作成しないでください?

ViewPagerとFragmentTabHostでフラグメントライフサイクルの違いは何ですか?

enter image description here

なぜ再び作成FragmentShop?

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



    } 
} 

(): この方法だけでここでViewPager用のページを作成します。アダプターです:

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

答えて

0

最後ソリューション:ここ

は断片ライフサイクルである:すべてのあなたのビューが破棄しかしないあなたの変数

私はちょうど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(); 
     } 
    } 
onDestroyView後 https://developer.android.com/guide/components/fragments.html#Creating

So You Ju STは再びすべてのビューの作成が必要とSETパラメータとドンの `tは、新しいデータを取得し、私はただ、ListViewコントロールとフローティングボタン

これが私のために助けることはできませんが持っている:https://inthecheesefactory.com/blog/fragment-state-saving-best-practices/en

0

これを試してみてください。

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

      return marketFragment; 
     } 
+0

TNXの@}; - 、しかし、動作しませんでしたが – Criss

関連する問題