Android:FragmentPagerAdapter不保存Fragment的状态?

Gla*_*r89 1 java android android-fragments fragmentpageradapter android-sqlite

我有FragmentPagerAdapter的问题.

我无法保存片段的状态,然后在片段中有视图.每当我使用左右滑动时,通过覆盖扩展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);
    }


}
Run Code Online (Sandbox Code Playgroud)

在Fragment的每个实例的OnCreateView方法中,SQLite数据库有几个步骤,这会导致数据库连接池的饱和.

每当更改动态片段时发现警告:"W/SQLiteConnectionPool(1111):数据库'/ data/data/com.myapp/databases/mydb'的SQLiteConnection对象被泄露!请修复您的应用程序以正确结束正在进行的事务,关闭数据库时不再需要它."

我已经尝试使用FragmentStatePagerAdapter但没有成功.

你能告诉我怎么办吗?我不希望每次都重新生成Fragment,从而导致数据库出现问题.你有一个保存片段/查看状态的例子吗?

我现在还没有找到任何建议.非常感谢你

Aya*_*fov 6

为ViewPager对象使用setOffscreenPageLimit属性.

ViewPager pager = (ViewPager) findViewById(R.id.viewPagerId);
pager.setOffscreenPageLimit(2);
Run Code Online (Sandbox Code Playgroud)