android - ViewPager 在第一页和最后一页重新加载 fragment

标签 android callback android-fragments android-viewpager

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

第一个(重新加载并返回到第二个)<- 第二个 fragment <-> 第 5 个 fragment -> 第 6 个 fragment (与第一个相同)

我尝试的是从第一个 fragment 和第六个 fragment 创建回调,如下所示

public static class callbackFragmentLoading implements callbackFragmentLoad {

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

}

我将回调传递给了 fragment 构造函数,这样我就可以在 onActivityCreated 中调用 onLoading 函数。但我每次执行此操作时,应用程序都会被强制关闭,并且 logcat 显示

recursive entry to executependingtransactions

有什么办法可以做到这一点吗?还是我的方法不对?

谢谢

最佳答案

is there any way to do this? or my method for doing it is wrong?

ViewPagerFragments 之间搞乱回调可能不是一个好主意。相反,我会这样做:

  • 不要从 ViewPagerFragments 中加载任何数据(例如使用 Loader),而是让 FragmentActivity 执行此操作(Fragments 将通过 Activity 中的方法获取它)。
  • 您的两个加载 fragment (位置 05)将在其 onResume 方法中调用父 Activity 上的重新加载操作(就像Loader重新启动)
  • 此时,Activity 将加载/重新加载数据,完成后会将 ViewPager 设置为正确的项目(1) > 或 4)
  • 在数据 fragment 的 onResume 方法中,您将刷新 fragment 的数据(这里您可能需要使用某种信号系统,因为您需要在 onCreateView(如果某些 fragment 距离当前可见位置较远,其 View 可能会被破坏)。

由于我对内部数据 fragment 了解不多,所以我写了 basic skeleton sample (没有在 Activity 中加载数据)。

关于android - ViewPager 在第一页和最后一页重新加载 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13945520/

相关文章:

java - 找不到 androidx.camera :camera-view

android - XMPP在android中的实现

Android,布局中的透明子GLSurfaceView?

android - 从命令行打开特定的 Activity

angularjs - $http 回调的执行顺序

Javascript FOR 循环回调

C++ Win32 未处理的异常处理程序

android - getView() 返回 null

java - onClick 事件 fragment

android - 如何从我的适配器 onClick 打开一个 fragment