- 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/
我正在尝试在 map 上绘制一些疾病事件数据的位置。 我用它来导入数据: ByTown% addProviderTiles("CartoDB.Positron")%>% addPolygons
我有一个文件调用 find.js,我使用 node find.js 运行,我的节点是版本 10 我不知道为什么我无法使用 async await。 const axios = require("axi
我有一个项目作为引用添加到 System.Web。 但是,它似乎无法获取 HttpContext。这样做: Imports System.Web _ApplicationBase = HttpCont
在互联网上找到这段代码,出于某种原因它缺少 while 循环逻辑“while(i....)”,虽然我找到了 PigLatin* 问题的其他可行解决方案,但我真的很想了解这个正在工作。 *PigLati
我工作了一整天来运行 Xampp 并在其上安装 TYPO3。现在我登录到后端,但没有显示许多管理模块,例如模板、访问等。 - 一定是我做错了什么,但我不知道。 these are the module
你好 我有编译这个问题 \begin{equation} J = \sum_{j=1}^{C} \end{equation} 我不断收到错误 missing $ inserted 这很奇怪,因
我正在尝试使用 SQLite CLI,但无法获得 generate_series功能来工作。我可以按照文档中的建议使用递归 CTE 对其进行模拟,但我似乎无法获得该链接中的任何示例。这是我的 sess
我目前正在开发我想要的软件,而软件正在安装,它可以在后台为软件创建 native 图像。 我正在考虑使用 NGEN 并将进程优先级设置为低,因为我不希望它消耗 100% CPU。但是我发现我的计算机上
我想使用 Xcodes Instruments 进行 UI 自动化测试。但似乎缺少“自动化”。我怎样才能添加这个? 最佳答案 如果您想使用自动化仪器,请使用 Xcode 7.3。 Apple 在 Xc
我目前在 JS 开发中迈出了一小步,并编写了以下链接添加器: const button = document.getElementById('button') const listdiv = docu
此代码有什么问题: NSError *error = nil; [SFHFKeychainUtils deleteItemForUsername:@"IAPNoob01" andServiceName
出于某种原因,在安装和配置(我认为)一切之后,com.adobe.utils.AGALMiniAssembler 不见了,其他一切正常。 我认为我已尽一切努力让孵化器正常工作,但显然我错过了一步。 如
我有一个名为 new 的方法。调用 new 时,我传递了一个参数,但是当我运行应用程序时,出现没有参数或参数为空的错误。 StepReader.pm package StepReader; use s
安装 gtk 1.2(包名 gtk1)和 macports chokes 在最终的 make 中,在 libintl.h 的第 440 行。 extern locale_t libintl_newlo
我用按钮创建表格。 这是javascript代码: function layersListTable(layers) { var content =''; $.each($(layer
我在使用此 javascript 时遇到此错误,任何人都可以帮我弄清楚我做错了什么吗? $(this).prepend('Check availability »'); 它给我错误 mis
我有一个独立的工具链 NDK13b、api19、llvm 3.8 编译器、arm 32 位、带有 libcpp(llvm C++ 库) 我想避免依赖 libgcc,所以我构建了 compiler-rt
我按照一些教程使用 phonegap 的条形码扫描器插件。但是当我从现有源创建一个新的 android 项目来创建条码库时 (step 6 in this page)我收到错误:“AndroidMan
我现在尝试在 Eclipse 中打开我的布局 xml 文件。我只得到错误 No XML content. Please add a root view or layout to your docume
我的 android-sdk-windows\tools 目录中缺少层次结构查看器工具。 工具链接: http://developer.android.com/guide/developing/too
我是一名优秀的程序员,十分优秀!