问题标签 [fragmentstatepageradapter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 无法使 NavigationDrawer 和 FragmentStatePagerAdapter 一起工作
我正在尝试使用带有 FragmentStatePagerAdapter 的 NavigationDrawer 来导航我的应用程序。这个想法是,当单击 NavigationDrawer 的一个项目时,会打开一个新片段,其中包含两个选项卡。
我的问题是我无法使其正常工作。当单击 NavigationDrawer 的一个项目时,我得到四个而不是两个选项卡,然后是六个,...
这个问题可以用 actionBar.removeAllTabs() 解决,但我的主要问题是,当我通过重新单击 NavigationDrawer 的项目(片段 1 -> 片段 2 -> 片段 1)返回上一个片段时,我得到一个空片段。
我试图通过根据其他页面上的说明进行一些更改来解决这个问题,但我没有成功使它工作。
任何帮助将不胜感激,谢谢!
这是管理我的主要片段的类:
这是使用的 ViewPager
我的片段具有以下结构:
最后是我的 MainActivity:
android - 带有片段子集的 FragmentStatePagerAdapter
这个问题困扰我的时间比我愿意承认的要长,所以我来这里寻求帮助。
由于Android上的位图和OOM,我AFAIK被限制使用FragmentStatePagerAdapter来显示我的片段。
我正在实现一个游戏,我有一组片段。其中一些片段可以被锁定,因此在滑动列表时不应显示。
例如:
我有一个包含 1..10 个片段的集合。在这个集合中,片段#5、#6 和#7 被锁定。这意味着我有两个未锁定片段的子集(1..4 和 8..10)。
我想要的功能是从#1 滑到#4,从#8 滑到#10。
它应该不能从#4 滑动到#5,并且应该不能在两个子集之间滑动。
当显示片段 #4 时,它应该像 #4 是列表的末尾一样起作用。因此,当显示#8 时,它应该显示为#8 在另一个子集中时位于列表的开头。
有什么建议吗?我试图覆盖 getItem 并传入子集,这主要导致 NPE 或显示错误的片段。
android - Android FragmentPagerAdapter 和 Fragment 的视图生命周期
我对如何正确使用 FragmentPagerAdapter 有很多疑问。与如何创建适配器或实现方法无关,它与底层片段应如何管理实例化视图有关。
在有关 FragmentPagerAdapter 的 Android API 中,明确说明如下:
这个版本的分页器最适合在需要分页的情况下使用少数通常更静态的片段,例如一组选项卡。用户访问的每个页面的片段将保存在内存中,尽管它的视图层次结构在不可见时可能会被破坏。这可能会导致使用大量内存,因为片段实例可以保持任意数量的状态。对于较大的页面集,请考虑 FragmentStatePagerAdapter。
所以可以假设一个fragment在自己的onCreateView中返回的view,可以被Androiddispose。同样值得注意的是,当您有超过 3 个页面并在它们之间切换时,对于同一个片段实例,每个片段的 onCreateView 会被调用多次。FragmentPagerAdapter API 中给出的示例似乎与这种方法完美结合:
请注意,在此示例中,它没有保留对 Fragment 本身中实例化视图的任何引用。但是,通常需要保存实例化的视图引用,以便进一步更新与用户交互的界面。在这种情况下,我认为视图层次结构不会按照文档中的建议被破坏(因为片段状态没有被破坏)。
在这种情况下,保存实例化视图并在下一个 onCreateView 中再次返回是合法的吗?
使用 ViewPager 中的 setOffscreenPageLimit 来增加内存中保留的页面数量而不是重用视图是否更好?
当文档表明视图层次结构可以被破坏时,我的所有疑问都出现了,但是如果您在片段中保留任何视图引用......它们不能被垃圾收集器破坏。我是对的?
android - ViewPager 具有不同的纵向和横向适配器
在纵向模式下,我ViewPager
有 3 个片段 A、B、C,但在横向模式下,它只有 2 个片段 A 和 C。所以我FragmentStatePagerAdapter
为每个模式创建 2 个。问题是当屏幕方向改变时,ViewPager
恢复并使用旧方向的先前片段。例如,当将方向从纵向更改为横向时,ViewPager
现在显示 2 个片段 A、B 而不是 A 和 C。我知道为什么会发生这种情况,但找不到一个好的解决方案。
我当前的解决方法是使用不同的 id ViewPager
(例如:纵向布局的 id/viewpager_portrait 和横向布局的 id/viewpager_landscape)以防止重用片段,但这会导致内存泄漏,因为旧片段不会被破坏并且仍保留在内存中.
我尝试了一些解决方法,例如在活动中调用 super.onCreate(null)或删除活动中的onCreate
片段,但它们都使我的应用程序崩溃。ViewPager
onSaveInstanceState
所以我的问题是如何避免在FragmentStatePagerAdapter
方向改变时重复使用一个或多个片段?
任何帮助将不胜感激。预先感谢。
android - 调用 Fragment 时如何刷新 ListView (FragmentStatePagerAdapter)
嗨,这是我的 MainActivity For Tab 。它有 3 个片段。
第二个片段向数据库添加一些数据,第三个片段可以检查它是否改变。但即使我使用第二个片段将一些数据添加到数据库中,第三个片段也没有变化。
如何通过单击第三个选项卡来刷新我的第三个片段。
下面是mainActivity,
下面是第三个片段。
谢谢您的帮助
android - 无法实现 notifyDataSetChanged()
我正在使用 aFragmentStatePagerAdapter
为了达到一个VerticalPageAdapter
目的,我必须创建一个动态编号的相同 Fragment 关于哪个Button
被按下,所以,我只检索getItem()
方法中的指定片段:
并getCount()
返回一个关于Button
在其他片段中按下的动态数字:
但这给了我IlligalStateException
,因为我没有被调用notifyDataSetChanged()
,所以,我将通知添加到我用来提高片段数量的方法中:
但我也得到了IlligalStateException
:
因此,我决定在返回 Value 之前将其添加到 getCount() 方法中,如下所示:
但这给了我一个StackOverflowError
:
android - FragmentStatePagerAdapter FragmentPagerAdapter 总是静态的更好吗?
我正在学习使用浏览器。而这些类,在示例中总是静态的更好,如果先充电内存有什么区别?
android - 将新片段添加到 ViewPager 时出现 NullPointerException
我愿意在我的 android 应用程序中向 ViewPager 添加动态数量的片段,以便我使用以下方式:
片段活动:
页面适配器:
片段:_
错误日志:
android - 将 Fragment 添加到 ViewPager 时,Activity 已被破坏
我正在ViewPager
使用动态数量的片段创建一个,我FragmentStatePagerAdapter
为此ViewPager
提供了一个片段列表,如下所示:
单击某些按钮时会获得片段列表Fragment
,因此,我向其中添加了以下方法Fragment
,以便将此片段列表添加到FragmentStatePagerAdapter
:
提示:在我的应用程序中,我使用VerticalViewPager
notViewPager
但它是一个具有相同行为的库ViewPager
,但进行了一些不会影响整个过程的修改。
这是日志错误:
android - 在 FragmentStatePagerAdapter 中的回压后恢复时,Childfragment 不更新 ActionBar
我的应用程序在页面之间滚动时使用了 FragmentStatePagerAdapter 有一个小问题。
首先,我将描述如何使用精简版本构建应用程序。
应用说明
我有一个 Activity 将所有东西放在一起。这个 Activity 反过来托管一个 Fragment,在本例中称为 Pager。
这个 Pager 类内部有一个 ViewPager,其中一个 FragmentStatePagerAdapter 作为内部类,用于为 ViewPager 提供片段。提供给 ViewPager 的片段是 FragmentA 的实例。FragmentA 在 ActionBar 上有自己的内容和自己的项,但也可以依次打开其他 Fragment。在我的“真实”应用程序中,这可以通过单击 ListView 中的某个项目或单击 ActionBar 上的按钮来完成。在这个简化的例子中,FragmentA 可以通过一个按钮打开 FragmentB。
到目前为止,这一切正常。
问题
当从任何 FragmentA 片段打开 FragmentB 时,它会在 ActionBar 中正确显示其自己的内容和菜单,替换 FragmentA 的菜单。但是,当通过后退按钮导航返回时,FragmentA 的 ActionBar 永远不会恢复到 FragmentA-actionbar 在打开 FragmentB 之前的状态,而是空的。
可能奇怪的行为
当我更改 MainPagerAdapter 扩展 FragmentPagerAdapter 而不是 FragmentStatePagerAdapter 时,突然之间它工作得很好,我真的不明白为什么会这样。此外,当 Fragment 包含在 FragmentStatePagerAdapter 中时,手动调用 supportInvalidateOptionsMenu() 根本不起作用。
我查看了这两种适配器类型的来源,但我无法弄清楚为什么其中一种有效而另一种无效。
MainActivity.java
activity_main.xml
寻呼机.java
wrapper_layout.xml
片段A.java
一个.xml
片段B.java