- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个 FragmentStatePagerAdapter,里面有 6 个 fragment 。
每个 fragment 都连接到服务器并加载数据。
现在,服务器连接正在 Fragment.onStart() 中完成,这意味着在任何时候,我都有 3 个 HTTP 请求(选定的 fragment ,每边一个)。
我想要的是一次只有一个连接,所以我想用
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener()
{
@Override
public void onPageSelected(final int position)
{
CustomFragment fragment = (CustomFragment) myFragmentStatePagerAdapter.getItem(position);
fragment.onSelected();//do stuff in here
}
});
事情是,getItem()
返回 fragment 的一个新实例,尚未添加到管理器(因此,尚未创建 View 等)。
此外,我已经尝试过 setUserVisibleHint(boolean isVisibleToUser)
但没有在可见时调用,仅在 isVisibleToUser = false 时调用
那么,如何实现Fragment的“onPageSelected()”事件呢?
提前致谢
最佳答案
最适合您的解决方案是覆盖 setUserVisibleHint()
。确保扩展 FragmentPagerAdapter
。来自其 source code您可以看到它也为可见 fragment 调用 setUserVisibleHint(true)
。我一直在使用它,效果很好。
// adapter
public static class PlayerAdapter extends FragmentStatePagerAdapter {
public PlayerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 6;
}
@Override
public Fragment getItem(int position) {
return new SimpleFragment();
}
}
// fragment
public class SimpleFragment extends Fragment {
private static final String TAG = BookControlsFragment.class.getSimpleName();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_simple, container, false);
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
Log.d(TAG, "setUserVisibleHint: " + isVisibleToUser);
}
}
关于android - FragmentStatePagerAdapter onPageSelected 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23857299/
我正在使用 this example 处理 FragmentStatePagerAdapter . MyAdapter 类实现如下: public static class MyAdapter ext
当我使用 FragmentStatePagerAdapter 扩展我的适配器并使用 fragment 管理器和常量 BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT 传递参数
我在使用 FragmentStatePagerAdapter 管理更改的项目列表时遇到问题。请查来源here . 问题是,当底层列表更改时,并且我调用 notifyDataSetChanged,适配器
我正在实现FragmentStatePagerAdapter并且我想要一个可拖动的标题。每个 fragment 的标题都可以像寻呼机效果一样进行交互。用户可以拖动或浏览所有 fragment 的tit
我已经实现了一个在 viewpager 中显示 fragment 的 Activity 。该 Activity 最初显示给定类型(类型 A)的 5 个 fragment 。每个类型 A fragmen
我知道还有其他几篇关于此主题的帖子,但我想粘贴我的代码,因为我相信其中可能存在导致我出现问题的错误。我的 FragmentStatePagerAdapter 返回了错误的位置,我不确定为什么。 这是我
在我的主要 Activity 中,我有多个 fragment ,您可以通过底部导航进行导航(替换主要 Activity XML 中的 FrameLayout 容器) 其中一个 Fragment 包含一
我有一个 ViewPager+FragmentStatePagerAdapter 主机 Activity ,它让我可以浏览一组 fragment (同一 ItemFragment 类的不同实例),并且
我在我正在开发的应用程序中遇到了 OutOfMemoryErrors,我很难弄清楚如何修复它以及到底是什么问题。我正在使用 FragmentStatePagerAdapter,因为这似乎是最佳/推荐的
我想知道是否可以在没有支持库的情况下使用 FragmentStatePagerAdapter 类或其等效类? 我知道如何使用 native fragment 来代替支持库中的 fragment ,并且
我有一个 ViewPager,其中的页面数是动态的。每个页面都需要从数据库读取并显示该页面的数据集。 我将当前选定的页面标题与数据库“用户名”中的第一个值进行比较,以检查数据是否与该页面相关。 我的
我正在尝试在 View 页面中显示一些 fragment 。我使用从 NavigationDrawer 启动 PlanFragment FragmentTransaction transaction
我正在学习教程 here它使用带有 FragmentStatePagerAdapter 的 TabLayout。一切都很好,除了我需要禁用我的第二个选项卡上的滑动,因为它使用水平滚动。如果所有选项卡都
Noob android 开发者的问题 问题缺失: 我正在尝试实现无限滚动功能,当 FragmentStatePagerAdapter 到达最后一项时通过网络请求加载更多数据,目前我将 getCoun
我有一个 ViewPager,其中包含 Fragment。 ViewPager 有一个适配器 FragmentStatePagerAdapter 适配器的 getItem 方法。 @Override
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我创建了一组水平选项卡,对于每个选项卡内容,它都有一个 View 分页器,它又允许滑动 View 的内容。 我目前正在将其编码为适配器中的 3 个 View ,并返回一个新的内部 fragment ,
我有一个名为 MainActivity 的 Activity ,它有一个 ViewPager 和一个 TabLayout。 ViewPager 有 4(四)个 fragment 绑定(bind)在那里
我想要实现的目标: 带有 ViewPager 的 Activity,显示适配器中对象列表的 fragment (FragmentStatePagerAdapter)。 最初,Activity 将 SQ
我在我的单一 Activity 应用程序上使用嵌套的 FragmentStatePagerAdapter。当前布局是: Activitiy - Login Fragment - Master
我是一名优秀的程序员,十分优秀!