当前位置: 首页 > 知识库问答 >
问题:

应该在哪里使用PageViewer?

莫宁
2023-03-14

我已经将ViewPager和number of Fragment实现为子级,这里每个子级都覆盖自己的onattach、onCreateView、onViewCreated和setUserVisibleHint

在我的应用程序中,导航行为是随机的,不是每次都有顺序。因为页面查看器执行缓存来加载额外的子级,这就是我的问题所在。我不确定何时应该初始化/释放子类成员。

需要你们的建议,在这种情况下使用PageViwer是否更好,或者我应该为每个组件使用传统的活动流。

共有1个答案

水浩歌
2023-03-14

viewpager通常用于将高效水平项移动到项导航。典型的用例是

  • 浏览相关项目(如电子邮件、图像、专辑歌曲等)
  • 在选项卡之间滑动
  • 在类似向导的活动中来回滑动

有关更多细节,您可以阅读有关滑动视图Android设计模式的部分。

我不确定何时应该初始化/释放子类成员。

您基本上应该依赖于两种方法:onstart()onstop()。在onstart()中,可以创建类成员并初始化所需的所有内容。在onstop()方法中,您应该取消初始化所有内容,并删除在onstart()中设置的所有侦听器。

方法SetUserVisibleHint()独立于OnStart()OnStop()使用。你最好不要初始化或破坏里面的任何东西。您不能将它考虑到一个生命周期方法,因为它不是。它只是给你一个提示,你的片段对用户是可见的。在这里您可以启动或停止动画,或请求数据更新或执行类似的任务。这是这种方法的唯一目的。

需要你们的建议,在这种情况下使用PageViwer是否更好,或者我应该为每个组件使用传统的活动流。

如果您的活动符合上面提到的一点,我建议您使用viewpager。否则,您可能会考虑其他选择。

更新:您很可能不会经常重写片段的onCreate()onDestroy()生命周期方法。您将改用onCreateView()onDestroyView()方法。在那里,您可以实现所谓的静态初始化,即在片段仍然存在时不改变的初始化。这是布局初始化和类似的任务。

 类似资料:
  • 问题内容: 我在某处读到该函数将空字符串视为,因此这不是从HTML表单验证文本输入和文本框的有效方法。 因此,您可以用来检查用户是否键入了某些内容。 函数将空字符串视为是真的吗? 那我应该在什么情况下使用呢?我应该经常检查是否有东西吗? 例如代替 使用这个 问题答案: isset vs.!empty 自由贸易协定: “ isset()检查变量的值是否包含(False,0或空字符串),但不包含NUL

  • 问题内容: 我对应该在哪里放置我的虚拟环境感到困惑。 在我的第一个django项目中,我使用以下命令创建了该项目 然后我进入djangoproject目录并运行命令 在与内部目录相同级别上创建了虚拟环境目录。 这是为特定项目创建virtualenv的错误位置吗? 我给人的印象是,大多数人将所有virtualenvs放在一个完全不同的目录中,例如,然后使用virtualenvwrapper在它们之间

  • 下面这2段代码有区别吗? 我好奇为啥都是生成的,位置还变了。。。 laravel 11

  • 按照惯例,用户接口的ActionListener应该去哪里?我有几个选择,但似乎没有一个是对的。 速记: null 我可以在GUI中内联声明一个新的ActionListener,存储它,然后它/将其指针传递到需要它的地方。 我可以让GUI本身实现ActionListener,并将对自身的引用传递到需要它的地方。 我可以在主逻辑中内联声明一个新的ActionListener(这是有意义的,因为按钮执

  • 问题内容: Swing应用程序现在真的被使用吗?我找不到使用它们的地方。可以跳过AWT和Swing包吗(尽管我学到了一些基础知识)? 问题答案: 如果您是专门为Web编写的,则可以跳过Swing,否则,您肯定会碰上它。如果没有Swing GUI,我从来没有在非平凡的Java应用程序上工作过。 另外,Swing是更好使用的API之一。如果您使用大多数其他工具,则会发现它们更加难以使用和/或与平台不兼

  • 问题内容: 我使用netfishs 6.7.1和glassfish v2.1编写了一个Web服务项目,将log4j.properties放入项目的根目录并使用: 在构造函数中: 在功能上: 但是,这是错误信息(实际上,我已经尝试将它几乎可以实现的每个目录都放入): 问题答案: 我知道回答这个问题有点晚了,也许您已经找到了解决方案,但是我将发布我找到的解决方案(在我进行大量Google搜索之后),因