- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一组水平选项卡,对于每个选项卡内容,它都有一个 View 分页器,它又允许滑动 View 的内容。
我目前正在将其编码为适配器中的 3 个 View ,并返回一个新的内部 fragment ,该 fragment 表示每当调用 getItem() 时的详细信息。
这一切正常,直到我导航到另一个选项卡并且当我返回时中间 View 丢失,这发生在所有选项卡上。
当我查看调试时,我只看到对位置 0 和 2 的 getItem 调用,尽管总是缺少一个 View ,所以我只是没有渲染 View 而不是渲染 View ,如果我滑动我得到另一个查看。
如果我不单击另一个选项卡,而是继续在默认选项卡中的 View 中滑动,那么我不会丢失 View ,似乎只有当我单击转到另一个选项卡然后再次返回时才会丢失 View 。不过,我从未在位置 1 看到过查看请求,只有 0 或 2。
我的适配器是代表 ViewPager 的 fragment 的内部类,看起来像:
public class HomeAddressDetailFragmentStatePageAdapter extends FragmentStatePagerAdapter {
public HomeAddressDetailFragmentStatePageAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public int getCount() {
return 3;
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
Log.d(LOG_TAG, "requesting tab view in position: " + position);
android.support.v4.app.Fragment fragment = null;
fragment = new HomeAddressDetailFragment();
return fragment;
}
}
fragment 的onCreate:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = (View)inflater.inflate(R.layout.fragment_home_addresses, container, false);
HomeAddressDetailFragmentStatePageAdapter homeAddressDetailFragmentStatePageAdapter = new HomeAddressDetailFragmentStatePageAdapter(getFragmentManager());
homeAddressViewPager = (ViewPager)rootView.findViewById(R.id.home_addr_pager);
homeAddressViewPager.setAdapter(homeAddressDetailFragmentStatePageAdapter);
return rootView;
}
以及此 fragment 的 xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/home_addr_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
</android.support.v4.view.ViewPager>
</FrameLayout>
最佳答案
这是默认设置。 FragmentStatePagerAdapter 随时加载两个 fragment 。
在你的情况下:
或
意思是位置 1 的 fragment 总是“在那里”。
您可以(因为您有 3 个 fragment )告诉您的 ViewPager
一次加载两个以上的 fragment
homeAddressViewPager.setOffscreenPageLimit(2);
这样,您的 fragment 将不会重新加载(默认情况下 offScreenPageLimit 设置为 1)。
setOffscreenPageLimit(int number)
Set the number of pages that should be retained to either side of the current page in the view hierarchy in an idle state.
但是...最好在适配器不需要时保存您的 fragment 状态,并在它再次可见时重新加载它(例如通过使用 onSaveInstanceState
)
更新:
如前所述,您的工作流程应该是这样的。您发送请求以获取所有地址,在 ArrayList 中解析它们,每个 fragment 应该表示您的 ArrayList 中的一个条目。
最好的方法是将解析后的 ArrayList 传递给适配器,并在调用 getItem()
时,将 ArrayList 条目传递给包(这样您就可以在 Fragment 中访问它)。
public class HomeAddressDetailFragmentStatePageAdapter extends FragmentStatePagerAdapter {
private ArrayList<Address> arrayListAddress;
public HomeAddressDetailFragmentStatePageAdapter(FragmentManager fragmentManager, ArrayList<Address> arrayList) {
super(fragmentManager);
arrayListAddress = arrayList;
}
@Override
public int getCount() {
return arrayListAddress.size();
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
Bundle bundle = new Bundle();
bundle.putSerializable("address", arrayListAddress.get(position));
android.support.v4.app.Fragment fragment = new HomeAddressDetailFragment();
fragment.setArguments(bundle);
return fragment;
}
}
关于Android FragmentStatePagerAdapter - 缺少 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33017679/
我正在使用 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
我是一名优秀的程序员,十分优秀!