0

シナリオ:ViewPagerでそのフラグメントを再作成させるにはどうしたらいいですか?

私はそれが3つの断片を提供するFragmentPagerAdapterを持っていることを、ViewPagerとのフラグメントを持っています。

私のアプリケーションが初めて読み込まれると、3つのタブの断片はうまく見えます。

アプリケーションでナビゲートすると、FragmentManager.replaceを実行して別のフラグメントをロードします。

メインビュー(タブ付きビュー)に戻ると、最初のタブと2番目のタブが空白になります。

私はこのアプリケーションをデバッグしましたが、Fragment.onDestroyViewはTabフラグメントを呼び出すことはないため、再び表示されるときにはFragment.onCreateViewは決して再び呼び出されないので、私のビューは空白です。私はタブ付き断片で3番目のタブに移動した場合

、その後、Fragment.onDestroyPageAdapterによって呼び出される

だから、私の質問は(私が原因ViewPagerに1 offLimitのはず)、一度別の断片であります私の活動に読み込まれ、私は戻って行くか、Tabbed Viewに移動します。どのようにしてViewPager、またはPageAdapter、さらにはフラグメント自体を再作成することができますか?

これまでのところ、私はFragmentManager.remove(fragment)をTabViewに何も表示せずに実行しようとしましたが、毎回タブ付きビューに移動します。新しいインスタンスをFragmentManager.replaceメソッドに渡すと、毎回同じオブジェクトはFragmentManagerです。

TabView(フラグメント):

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    view = inflater.inflate(R.layout.tab_view, container, false); 
    viewPager = (ViewPager) view.findViewById(R.id.view_iam); 
    final PagerAdapter pagerAdapter = new MyFragmentAdapter(getActivity().getSupportFragmentManager()); 
    viewPager.setAdapter(pagerAdapter); 
    return view; 
} 

PageAdapter:

private static class MyFragmentAdapter extends FragmentPagerAdapter { 
    private Fragment[] tabs; 
    private String[] names; 

    public MyFragmentAdapter(FragmentManager fm) { 
     super(fm); 
     tabs = new Fragment[]{new FlightsView(), new MyFlightsRequestView(), 
       new MyFlightsView()}; 
     names = new String[]{"VUELOS", "SOLICITUDES", "MIS VUELOS"}; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return tabs[position]; 
    } 

    @Override 
    public int getCount() { 
     return tabs.length; 
    } 

    @Override 
    public String getPageTitle(int position) { 
     return names[position]; 
    } 

} 

FlightsView(タブ断片の一つ)

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.view_flight, container, false); 
    recycle_view = (RecyclerView) view.findViewById(R.id.recycler_view); 
    progressBar = (ProgressBar) view.findViewById(R.id.progress_bar); 

    setHasOptionsMenu(true); 
    return view; 
} 

答えて

2

あなたがからアダプタを拡張してみてくださいすることができFragmentStatePagerAdapterの代わりに FragmentPagerAdapter

+0

運は、どのような** getChildFragmentManager()**ではなく** getSupportFragmentManager()** – alacret

+1

ですそれは答えとして、他の人が解決策を見つけることができます – eminuluyol

+0

弟それだ.... – alacret

関連する問題