ViewPager with Fragment在第一页和最后一页重新加载

时间:2012-12-19 04:31:16

标签: android callback android-fragments android-viewpager

我正在尝试创建一个包含六个片段的ViewPager,但只有第二个片段到第五个片段包含我想要显示的数据以及我想要用来重新加载数据的第一个片段和最后一个片段再次将位置设置为第二个片段。整体流程如下:

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

我尝试过的是从第一个片段和第六个片段创建一个回调,就像这样

public static class callbackFragmentLoading implements callbackFragmentLoad {

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

}

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

  

递归进入executependingtransactions

有没有办法做到这一点?或者我这样做的方法是错的?

谢谢

1 个答案:

答案 0 :(得分:2)

  

有没有办法做到这一点?或者我这样做的方法是错的?

Fragments的{​​{1}}之间混淆回调并不是一个好主意。相反,我会这样做:

  • 请勿从ViewPager加载Loader中的任何数据(例如使用Fragments),而是ViewPager执行此操作(以及{{1}将通过FragmentActivity)的方法获得它。
  • 您的两个加载片段(位置FragmentsActivity)将在0方法中调用父5上的重新加载操作(如onResume重新启动)
  • 此时Activity将加载/重新加载数据,完成后会将Loader设置为正确的项目(ActivityViewPager)< / LI>
  • 在数据片段的1方法中,您将刷新片段的数据(这里您可能需要使用某种信号系统,因为您需要复制{{1}中的刷新代码(如果某些片段与当前可见位置相距很远,则可能会破坏其视图))。

由于我不了解内部数据片段的许多内容,我写了basic skeleton sample(没有在活动中加载数据)。