我使用的是ViewPager连同FragmentStatePagerAdapter主办三个不同的片段:
当我想Fragment1从ViewPager在FragmentActivity.
有什么问题,我该如何解决?
我无法在FragmentPagerAdapter中重用片段.使用destroyItem()方法,它正在删除片段,但仍然没有再次调用getItem().只有2-3个图像所以我使用FragmentPagerAdapter而不是FragmentStatePagerAdapter ..
public class ExamplePagerAdapter extends FragmentPagerAdapter {
ArrayList < String > urls;
int size = 0;
public ExamplePagerAdapter(FragmentManager fm, ArrayList < String > res) {
super(fm);
urls = res;
size = urls.size();
}
@Override
public int getCount() {
if (urls == null) {
return 0;
} else {
return size;
}
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
FragmentManager manager = ((Fragment) object).getFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove((Fragment) object);
trans.commit();
}
@Override
public Fragment getItem(int …Run Code Online (Sandbox Code Playgroud) 我正在编写一个使用FragmentPagerAdapter的应用程序.需要根据外部数据更新适配器中的片段 - 但这不会发生.我注意到片段类只在getItem函数中实例化一次:
@Override
public Fragment getItem(int position) {
TabInfo info = mTabs.get(position);
return Fragment.instantiate(mContext, info.clss.getName(),
info.args);
}
Run Code Online (Sandbox Code Playgroud)
即使我删除了该类并使用了一个新类,也没有任何帮助 - 这个方法只调用一次,第一次填充选项卡,然后再也不会.任何人都知道为什么?
谢谢!
我读到了关于这个问题的最后一个,但没有找到有帮助的解决方案,我只是不明白问题是什么.代码已经工作,但似乎有些后续工作已经破坏了它,然后我删除了我所做的每一个更改,但我仍然得到这个错误.我希望有人能更多地了解这个问题,并且可以帮助我.
06-22 22:59:01.966: E/AndroidRuntime(4701): java.lang.IllegalStateException: Can't change tag of fragment CardFragment{426ce8a0 #1 id=0x7f0e001f android:switcher:2131623967:1}: was android:switcher:2131623967:1 now android:switcher:2131623967:2
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.app.BackStackRecord.doAddOp(BackStackRecord.java:399)
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.app.BackStackRecord.add(BackStackRecord.java:390)
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.support.v13.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:103)
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:832)
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.support.v4.view.ViewPager.populate(ViewPager.java:1048)
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.support.v4.view.ViewPager$3.run(ViewPager.java:244)
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.view.Choreographer.doCallbacks(Choreographer.java:574)
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.view.Choreographer.doFrame(Choreographer.java:543)
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
06-22 22:59:01.966: E/AndroidRuntime(4701): at android.os.Handler.handleCallback(Handler.java:733)
06-22 22:59:01.966: …Run Code Online (Sandbox Code Playgroud) android ×4