【发布时间】:2014-03-28 09:55:22
【问题描述】:
我的 FragmentPagerAdapter 有问题。
我无法保存 Fragment 的状态,然后在 Fragment 中有视图。每当我使用左右滑动时,都会通过覆盖扩展 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 数据库都有几个步骤,这会导致数据库连接池饱和。
每当动态更改片段时发现的警告是:“W / SQLiteConnectionPool (1111):数据库'/data/data/com.myapp/databases/mydb'的 SQLiteConnection 对象已泄露!请修复您的应用程序以结束事务进度正常并在不再需要时关闭数据库。”
我已经尝试使用 FragmentStatePagerAdapter,但没有成功。
您能告诉我如何进行吗?我不希望每次都重新生成 Fragment,从而导致数据库出现问题。你有保存片段/查看状态的例子吗?
我暂时没有找到任何建议。 非常感谢
【问题讨论】:
-
片段中有列表视图吗?
-
我有列表视图和条形图。谢谢
-
我遇到了类似的问题,第一个片段中的列表视图在来自第三个片段后重新加载。我所做的是,我用 listFragment 替换片段并使用 SimpleCursorAdapter 和 LoaderManager.LoaderCallbacks
来填充列表视图 -
你能给我一个这个修复的例子吗?谢谢
-
这是一个很好的链接androiddesignpatterns.com/2012/07/…
标签: java android android-fragments android-sqlite fragmentpageradapter