我正在尝试创建一个包含六个 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?
在 ViewPager
的 Fragments
之间搞乱回调可能不是一个好主意。相反,我会这样做:
- 不要从
ViewPager
的Fragments
中加载任何数据(例如使用Loader
),而是让FragmentActivity
执行此操作(Fragments
将通过Activity
中的方法获取它)。 - 您的两个加载 fragment (位置
0
和5
)将在其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/