我对 FragmentPagerAdapter 有疑问。
我无法保存 Fragment 的状态,然后在 Fragment 中有 View 。每当我使用向左和向右滑动时,都会通过覆盖扩展 FragmentPagerAdapter 的静态类中的方法 getItem(int position) 来重新创建 Fragment。
public static class GraphicsCollectionPagerAdapter extends FragmentPagerAdapter {
final int NUM_ITEMS = 3; // number of tabs
public GraphicsCollectionPagerAdapter(FragmentManager fm) {
super(fm);
fragmentList = new AnalyzeFragmentPageListWithDate();
fragment1 = new AnalyzeFragmentPage1();
fragment2 = new AnalyzeFragmentPage2();
}
@Override
public Fragment getItem(int position) {
//Log.i(TAG, "getItem() -> New fragment at position " + position);
switch (position) {
case 0:
return fragmentList;
case 1:
return fragment1;
case 2:
return fragment2;
}
return null;
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Fragm1";
case 1:
return "Fragm2";
case 2:
return "Fragm3";
}
return "OBJECT " + (position + 1);
}
}
在 Fragment 的每个实例的 OnCreateView 方法中,有几个步骤到 SQLite 数据库,这会导致数据库连接池饱和。
每当更改动态 fragment 时发现的警告是:“W/SQLiteConnectionPool (1111):数据库‘/data/data/com.myapp/databases/mydb’的 SQLiteConnection 对象已泄露!请修复您的应用程序以结束事务适本地进行并在不再需要时关闭数据库。”
我已经尝试使用 FragmentStatePagerAdapter 但没有成功。
您能告诉我如何进行吗?我不希望每次都重新生成 Fragment,从而导致数据库出现问题。您有保存 fragment/ View 状态的示例吗?
目前我还没有找到任何建议。 非常感谢
最佳答案
为您的 ViewPager 对象使用 setOffscreenPageLimit 属性。
ViewPager pager = (ViewPager) findViewById(R.id.viewPagerId);
pager.setOffscreenPageLimit(2);
关于java - 安卓 : FragmentPagerAdapter don't saved the state of Fragment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22709367/