I am using FragmentPagerAdapter in Fragment, but when I display the Fragment below, it is displayed the first time, but since the second time, is the FragmentPagerAdapter?It is not called successfully and neither FragmentA nor FragmentB is displayed.
The FragmentPagerAdapter is managed by Fragmentmanager, so it was written that Fragmentmanager needs to be updated, so I think that's the cause, but what is the cause?
Also, I would appreciate it if you could tell me specifically how to solve the problem.I look forward to your kind cooperation.
public class Top extensions Fragment {
public static Top newInstance() {
return new Top();
}
@ Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@ Override
publicView onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.top, container, false);
// Configure MyPagerAdapter for ViewPager
ViewPager=(ViewPager)view.findViewById(R.id.pager);
pager.setAdapter(new MyPagerAdapter(getFragmentManager()));
// Configure ViewPager for PagerSlidingTabStrip
PagerSlidingTabStrip=(PagerSlidingTabStrip)view.findViewById(R.id.tabs);
tabs.setViewPager(pager);
getActivity().setTitle("Test";
return view;
}
@ Override
public void onCreateOptionsMenu(Menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu, menu);
}
private class MyPagerAdapter extensions FragmentPagerAdapter{
private final String[]TITLES={"A", "B"};
public MyPagerAdapter (FragmentManager fm) {
super(fm);
}
@ Override
public Fragment getItem(int position){
switch(position){
case0:
return new FragmentA();
case1:
return new FragmentB();
}
return null;
}
@ Override
public intgetCount(){
return TITLES.length;
}
@ Override
publicCharSequence getPageTitle(int position){
return TITLES [position];
}
}
}
Since it will be Fragment in Fragment, it is correct to pass getChildFragmentManager()
.
// Configure MyPagerAdapter for ViewPager
ViewPager=(ViewPager)view.findViewById(R.id.pager);
pager.setAdapter(new MyPagerAdapter(getChildFragmentManager()));
© 2024 OneMinuteCode. All rights reserved.