2

我正在尝试ViewPager使用六个片段创建一个,但只有第二个片段到第五个片段包含我想要显示的数据以及我想要用于重新加载数据并将位置设置为第二个片段的第一个片段和最后一个片段. 整体流程是这样的:

第 1 个(重新加载并返回第 2 个)<- 第 2 个片段 <-> 第 5 个片段 -> 第 6 个片段(与第 1 个相同)

我尝试过的是从第一个片段和第 6 个片段创建回调,如下所示

public static class callbackFragmentLoading implements callbackFragmentLoad {

    @Override
    public void onLoading() {
        mPager.setAdapter(mAdapter);
        mPager.setCurrentItem(2,false);
    }

}

我将回调传递给片段构造函数,以便可以在 onActivityCreated 中调用 onLoading 函数。但是我每次这样做时,应用程序都会被强制关闭,并且 logcat 会显示

执行挂起事务的递归入口

有什么办法吗?还是我这样做的方法是错误的?

谢谢你

4

1 回答 1

2

有什么办法吗?还是我这样做的方法是错误的?

Fragments在a之间处理回调ViewPager可能不是一个好主意。相反,我会这样做:

  • 不要在from 中加载任何数据(如使用Loader),而是让其去做(并且将通过 中的方法获取它)。FragmentsViewPagerFragmentActivityFragmentsActivity
  • 您的两个加载片段(位置05)将在他们的onResume方法中调用父级的重新加载操作Activity(如Loader重新启动)
  • 此时Activity将加载/重新加载数据,完成后它将设置ViewPager为正确的项目(14
  • onResume数据片段的方法中,您将刷新片段的数据(在这里您可能需要使用某种信号系统,因为您需要onCreateView在除了当前可见位置))。

由于我对内部数据片段知之甚少,因此我编写了一个基本的骨架示例(没有在活动中加载数据)。

于 2012-12-19T07:50:29.827 回答