シナリオ:ViewPagerでそのフラグメントを再作成させるにはどうしたらいいですか?
私はそれが3つの断片を提供するFragmentPagerAdapter
を持っていることを、ViewPager
とのフラグメントを持っています。
私のアプリケーションが初めて読み込まれると、3つのタブの断片はうまく見えます。
アプリケーションでナビゲートすると、FragmentManager.replace
を実行して別のフラグメントをロードします。
メインビュー(タブ付きビュー)に戻ると、最初のタブと2番目のタブが空白になります。
私はこのアプリケーションをデバッグしましたが、Fragment.onDestroyView
はTabフラグメントを呼び出すことはないため、再び表示されるときにはFragment.onCreateView
は決して再び呼び出されないので、私のビューは空白です。私はタブ付き断片で3番目のタブに移動した場合
、その後、Fragment.onDestroy
はPageAdapter
によって呼び出される
だから、私の質問は(私が原因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;
}
運は、どのような** getChildFragmentManager()**ではなく** getSupportFragmentManager()** – alacret
ですそれは答えとして、他の人が解決策を見つけることができます – eminuluyol
弟それだ.... – alacret