问题
I am getting issue with ViewPager. I am using FragmentActivity and I added the multiple fragment inside FragmentActivity as following method.
public void addFragment(Fragment fragment, boolean addToBackStack, int transition) {
FragmentTransaction ft = getFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_up,R.anim.slide_down,R.anim.slide_up,R.anim.slide_down);
ft.replace(R.id.main, fragment);
ft.setTransition(transition);
if (addToBackStack)
ft.addToBackStack(null);
ft.commit();
}
I am using ViewPager Inside the fragment. ViewPager is working fine when FragmentActivity loaded. but when i use another fragment ViewPager got invisible.
for example
a.) Fragment A with ViewPager
b.) Fragment B without ViewPager
Fragment A working fine when I run App. when i go to Fragment B then I again i replace Fragment B to Fragment A then ViewPager is not working. I see the blank view where I am using ViewPager.
Please let me know How can i solve this issue
Thanks
回答1:
I solved it myself the issue was when you use the ViewPager
inside the fragment use getChildFragmentManager()
instead of getSupportFragmentManager()
or getFragmentManager()
.
That's it.
回答2:
I cannot comment so I'm going to write an answer here.
Why you don't just put the viewpager as a fragment:
public class ViewPager extends Fragment{
public static final String TAG = ViewPager.class.getSimpleName();
private ViewPagerAdapter mAdapter;
public static ViewPager newinstance(){
ViewPager viewPager = new ViewPager();
return viewPager ;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.view_pager, container, false);
ViewPager viewPager = (ViewPager) view.findViewById(R.id.pager);
mAdapter = new ViewPagerAdapter(getChildFragmentManager());
viewPager.setAdapter(mAdapter);
return view;
}
}
In your adapter:
public class ViewPagerAdapter extends FragmentPagerAdapter{
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
return Fragment.newinstance();
}
@Override
public int getCount() {
return 5; //number of pages on your viewPager
}
Then on your main activity you can make the transaction to add the view pager
ViewPager viewPager = ViewPager.newInstance();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.content_frame,viewPager);
ft.addToBackStack(ViewPager.TAG);
ft.commit();
来源:https://stackoverflow.com/questions/25985576/android-viewpager-inside-fragment-loaded-only-once