ViewPager2 崩溃

2023-12-24

我正在将高级导航组件与 BottomNavigationView 一起使用。

In one tab我有ViewPager2。当我第一次单击该选项卡时,效果很好。

尽管第二次,来吧,该选项卡应用程序不断崩溃。下面是崩溃日志。我怎样才能解决这个问题?

java.lang.IllegalArgumentException
在 androidx.core.util.Preconditions.checkArgument(Preconditions.java:36)
在 androidx.viewpager2.adapter.FragmentStateAdapter.onAttachedToRecyclerView(FragmentStateAdapter.java:140)
在 androidx.recyclerview.widget.RecyclerView.setAdapterInternal(RecyclerView.java:1206)
在 androidx.recyclerview.widget.RecyclerView.setAdapter(RecyclerView.java:1158)
在 androidx.viewpager2.widget.ViewPager2.setAdapter(ViewPager2.java:460)
at com..ui.home.history.HistoryFragment.setupAdapter(HistoryFragment.kt:25)
at com.
.ui.home.history.HistoryFragment.viewSetup(HistoryFragment.kt:21)
在 com.****.base.BaseFragment.onViewCreated(BaseFragment.kt:37)
在 androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:332)
在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
在 androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
在 androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
在 androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
在 androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722)
在 androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346)
在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188)
在 androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
在 androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
在 androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
在 androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
在 androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
在 android.os.Handler.handleCallback(Handler.java:873)
在 android.os.Handler.dispatchMessage(Handler.java:99)
在 android.os.Looper.loop(Looper.java:193)
在 android.app.ActivityThread.main(ActivityThread.java:6940)
在 java.lang.reflect.Method.invoke(本机方法)
在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

这是我的片段代码:

private val adapter by lazy {
    HistoryPagerAdapter(this)
}

override fun viewSetup() {
    binding.vpBuySell.adapter = adapter
    TabLayoutMediator(
        binding.tabBuySell,
        binding.vpBuySell,
        TabLayoutMediator.TabConfigurationStrategy { tab: TabLayout.Tab, i: Int ->
           tab.text = when (i) {
                0 -> getString(R.string.buy)
                1 -> getString(R.string.sell)
                else -> getString(R.string.buy)
            }
        })
}

这是用户界面代码:

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/blue_122e47">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:background="@color/blue_06233e"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:titleTextColor="@color/white">

        <androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/tvTitle"
            style="@style/ToolbarTitleTextStyle"
            android:text="@string/history" />

        <TextView
            android:id="@+id/btnExport"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/_24sdp"
            android:layout_gravity="end"
            android:layout_marginEnd="@dimen/_8sdp"
            android:fontFamily="@font/helvetica_neue_medium"
            android:insetLeft="0dp"
            android:gravity="center"
            android:background="@drawable/shape_export_button"
            android:insetTop="0dp"
            android:insetRight="0dp"
            android:insetBottom="0dp"
            android:foreground="?selectableItemBackground"
            android:paddingBottom="@dimen/_2sdp"
            android:paddingStart="@dimen/_8sdp"
            android:paddingEnd="@dimen/_8sdp"
            android:text="@string/export"
            android:textAllCaps="false"
            android:textColor="@color/white"
            android:textSize="@dimen/_12ssp" />

    </androidx.appcompat.widget.Toolbar>


    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tabBuySell"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/blue_122e47"
        app:tabIndicatorFullWidth="false"
        app:tabIndicatorGravity="bottom"
        app:tabTextAppearance="@style/HistoryTabTextStyle"
        app:tabTextColor="@color/gray_697b8b"
        app:tabSelectedTextColor="@color/white"
        app:tabIndicatorHeight="@dimen/_2sdp"
        app:tabIndicatorColor="@color/blue_47cfff"
        app:layout_constraintTop_toBottomOf="@id/toolbar"
        app:tabGravity="start"
        app:tabMode="scrollable" />

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/vpBuySell"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@id/tabBuySell" />

</androidx.constraintlayout.widget.ConstraintLayout>

这是我的适配器代码:

class HistoryPagerAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {

    override fun getItemCount(): Int {
        return 2
    }

    override fun createFragment(position: Int): Fragment {
        return when (position) {
            0 -> HistoryBuyFragment()
            1 -> HistorySellFragment()
            else -> HistoryBuyFragment()
        }
    }

}

实际错误是适配器的延迟初始化。我也不知道为什么会这样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ViewPager2 崩溃 的相关文章

  • 将 cron 作业配置为在 Jenkins 上每 15 分钟运行一次

    如何在 Jenkins 上每 15 分钟运行一次 cron 作业 这是我尝试过的 在 Jenkins 上 我使用以下 cron 语法设置了每 15 分钟运行一次的作业 14 但该作业每小时执行一次 而不是 15 分钟 我收到有关 cron
  • 为什么没有参数的函数(与实际函数定义相比)可以编译?

    我刚刚看到某人的 C 代码 我很困惑为什么要编译它 有两点我不明白 The 函数原型与实际函数定义相比没有参数 中的参数函数定义没有类型 include
  • Thymeleaf Spring 安全集成 sec:授权不起作用

    我正在使用带有 Spring security 的 Thymeleaf 模板引擎 我还使用 Thymeleaf Spring Security 集成模块来使用 sec authorize 功能 但由于某种原因它不起作用 我没有收到任何错误
  • 类型铸造自我

    以下自我转换对 ClassA 有何作用 这种种姓可以让你进入ClassA吗 A h类 interface ClassA NSObject NSUInteger someNumber ClassB classB property nonato
  • Spring - 使用存储过程时使用 simplejdbccall 进行批量更新

    我正在使用 spring jdbc 模板 使用存储过程创建记录 public Long create City obj SimpleJdbcCall jdbcCall new SimpleJdbcCall getJdbcTemplate g
  • 用于高级搜索/过滤的.Net Web API URL 约定

    我对 Microsoft 的 REST 和 WebAPI 比较陌生 我们正在实现一个中心 REST 服务 它将容纳多种类型的对象获取和设置 作为该项目的领导者 我的任务是提出我们正在使用的正确的 Uri 设计 我想知道关于战争什么想法更好
  • 你遇到过哪些 git 陷阱?

    我遇到的最糟糕的情况是 git 子模块 我在 github 上有一个项目的子模块 该项目无人维护 我想提交补丁 但无法提交 所以我分叉了 现在子模块指向原始库 而我需要它指向 fork 因此 我删除了旧的子模块 并将其替换为同一提交中新项目
  • 将文件附加到 PHPMailer

    我目前正在开发一个项目 该项目将文件作为 blob 存储在数据库中 我需要将文件附加到电子邮件并通过 PHPMailer 发送出去 我熟悉 mail gt addAttachment 但是 这个函数似乎只接受文件路径 而我没有 我想知道是否
  • 使用Python的timeit获取“全局名称'foo'未定义”

    我想知道执行一条Python语句需要多少时间 所以我上网查了一下 发现标准库提供了一个名为timeit http docs python org library timeit html旨在做到这一点 import timeit def fo
  • 从哪里开始阅读 SQLite 源代码? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想了解sqlite是如何实现的 并且 想阅读源代码 我已经下载了源代码 我应该开始查看代码的哪一部分 SQLite文档页 http
  • 如何使用 winrar 提取与 zip 文件同名的文件夹中的所有 zip 文件?

    我需要迭代一个文件夹 对于每个 zip 文件 我需要使用它的名称来提取它 也就是说 如果它是 test zip 那么它应该解压到 test 文件夹 同样 它应该迭代我的文件夹及其子文件夹并提取内容 我编写了下面的代码 但它没有使用 zip
  • 获取css规则、chrome扩展

    我正在开发 Chrome 扩展程序 它需要访问document styleSheets cssRules 它在某些网站上运行良好 例如w3school 但其他人则不然 比如堆栈溢出 我收到错误 Failed to read the cssR
  • 当不存在循环时,terraform destroy 会产生循环错误

    地形版本 Terraform v0 12 1 地形配置文件 main tf在我的根提供程序中 provider google module organisation info source modules organisation info
  • 安装 RVM 时出现问题

    我已按照 rvm 网站上的说明执行了命令 但似乎不起作用 从 git 存储库获取代码运行顺利 但是当我尝试使用时 rvm notes Error usr local bin rvm line 73 home cody rvm scripts
  • 获取长度为 n 的所有(n-选择-k)组合

    我怎样才能获得长度的所有组合 按顺序 n从数字列表中 例如 给定列表 1 2 3 4 并设置n 3 我怎样才能得到这些结果 1 2 3 1 2 4 1 3 4 2 3 4 For combinations of all possible l
  • 使用 Javascript 删除字符串的最后一个字符

    我有一个DIV与一些字符 如何在每次单击时删除文本中的最后一个字符DIV itself 删除第一个字符 div on click function this text function index text return text repl
  • 构建 OpenCV 时出错 :: MonitorFromRect 未在此范围内声明

    我试图建立OpenCV version 2 4 8与它一起使用CodeBlocks and MinGw 我按照以下指示进行操作here http kevinhughes ca tutorials opencv install on wind
  • AddressAccessDeniedException :无需 netsh 即可解决它?

    我遇到了异常AddressAccessDeniedException因为我的processus没有注册URL的权限 我首先以管理员身份运行我的程序 好的 它成功了 但我现在想要分发我的应用程序 并且我希望每个用户都能够运行它 而不必成为管理
  • 每组最大 n 个 SQL 查询的高性能方法

    我正在尝试构建一个基础设施 以便根据需要快速运行回归 从包含我们网络服务器上所有历史活动的数据库中提取 apache 请求 为了通过确保我们仍然回归来自较小客户的请求来提高覆盖范围 我想通过为每个客户检索最多 n 个 为了这个问题 假设 1
  • GetActiveObject() 与 GetObject() -- MK_E_UNAVAILABLE 错误

    All 我在将一些 VBA 代码转换为 C 时遇到一些问题 我们有一个充当本地 COM 服务器的第 3 方应用程序 在我们使用的VBA代码中获取对象 获取对现有对象的引用 e g Set appHandle GetObject ProgId

随机推荐

  • 为什么junit中的assertEquals和assertSame对于同一个类的两个实例返回相同的结果?

    根据文件 assertEquals 断言两个对象相等 assertSame 断言两个对象引用同一个对象 所以我期待如果我有像下面这样的课程 class SomeClass then SomeClass someClass1 new Some
  • 如何在 JavaScript 中计算概率密度函数

    Note In 这个问题 https stackoverflow com questions 41224087 d3 js how to add distribution curves to histograms in version 4
  • Angular 和 Elasticsearch 的示例

    我正在寻找 AngularJS 和 Elasticsearch 使用新的官方客户端库协同工作的工作示例 elasticsearch angular js 发现于http www elasticsearch org blog client f
  • 如何区分javafx中表格行的单击或双击

    我正在尝试在 javafx 中创建一个表 允许用户单击一行以转到一页或双击该行以转到另一页 问题在于应用程序注册了单击事件 但没有等待查看是否有另一个双击 有没有办法让程序等待 看看是否有另一次点击 到目前为止我所拥有的看起来类似于 Tab
  • sklearn 和大型数据集

    我有一个 22 GB 的数据集 我想在我的笔记本电脑上处理它 当然我无法将其加载到内存中 我经常使用 sklearn 但数据集要小得多 在这种情况下 经典方法应该是这样的 只读取部分数据 gt 部分训练你的估计器 gt 删除数据 gt 读取
  • boost::asio 读取处理程序类型要求未满足

    我正在尝试将读取标头处理程序实现为成员函数来处理传入数据 然而在编译过程中我被告知不满足类型要求 我检查了 boost 文档 函数签名似乎没问题 我看不出有什么不同 但是 boost 不接受该处理程序有效 cpp 文件 void tcpcl
  • 将 AngularJS 与 MeteorJS 结合使用

    所以我对这两种技术都相当陌生 我的计划是实施他们用 Backbone 制作的 Peepcode Tunes 项目 https github com philipkobernik backbone tunes https github com
  • Tensorflow:AttributeError:“NoneType”对象没有属性“original_name_scope”

    我正在尝试在谷歌云上的 debian 9 5 拉伸系统上运行一些 python 张量流代码 我正在使用该版本的tensorflow GPU版本 最新版本 并安装了适当的CODA和cuDNN软件 这是我的代码 import tensorflo
  • Android LibVLC 选项不起作用

    我正在使用 LibVLC 处理流 RTSP 我可以在可以查看流的地方使用它 但延迟设置为默认的约 2 秒 在 Ubuntu 桌面上 我可以使用以下选项启动 vlc 以大大改善延迟 vlc vvv rtsp 192 168 2 1 1234
  • 无法在React应用程序中运行puppeteer,找不到模块:编译时无法解析“ws”

    我想知道是否可以在我的 React 应用程序中运行 puppeteer 每当我尝试在我的 React 应用程序中运行 puppeteer 时 我都会收到 找不到模块 无法解析 ws 我已经尝试安装 ws 但仍然会出现相同的错误 简单的答案
  • XML 架构 (XSD) 中 xsd:union 的用途是什么?

    我出于某种目的正在解析 XSD 但面临一些 XSD 节点的问题 XSD 中 union 的用途是什么以及为什么使用它 它是否用于对 XML 施加某种限制 我正在附加联合和简单类型节点 请解释一下为什么使用它
  • 条形图中每个条形上的叠加线是什么?

    我正在尝试通过数据可视化来学习自己 当我浏览条形图时 我遇到了以下问题 在图表中 条形字符中的每个条形上都有一条垂直的黑线 那条覆盖的黑线到底意味着什么 感谢您的帮助 这个看起来像垂直的误差线 https en wikipedia org
  • 做 Laravel 教程,得到“未找到基表或视图:1146 表‘sdbd_todo.migrations’不存在”

    工作通过本教程 https www flynsarmy com 2013 12 creating a basic todo application with laravel 4 part 1 我执行以下步骤 您现在应该可以根据需要多次调用
  • 您可以从 p:ajax 侦听器更新 h:outputLabel 吗?

    我尝试使用 p ajax 标签 然后在该侦听器中设置一个名为 periodRendered 的值 然后我尝试通过 p ajax 标签的更新来更新 h outputLabel 标签 它没有更新 ajaxily 我认为这是因为 primefac
  • 按钮 ControlTemplate 和圆角

    我有一个按钮控制模板 我想制作带有圆角的按钮 我该怎么做 我尝试使用 CornerRadius 作为边框中的按钮 但它不起作用 按钮的背景已设置为具有角边框的图像 并且按钮看起来很尴尬 因为我无法设置按钮的角 请尝试以下操作
  • Flexbox的align-self属性没有转换?

    我尝试创建一个吗啡 按钮 它可以在另一个菜单上滑动 这个想法是基于 Codrops变形按钮概念 http tympanus net Development ButtonComponentMorph index5 html 现在已经差不多设置
  • 结构体中变量名前的点是什么意思?

    查看linux内核源代码 我发现了这一点 static struct tty operations serial ops open tiny open close tiny close write tiny write write room
  • Python 中循环链表的帮助

    我正在尝试制作一个循环单链表 我希望能够修改我的代码以获得单一喜欢的列表 但我遇到了一些麻烦 对于我的链接列表 我有 class Link object def init self data next None self data data
  • 在运行时获取 RecyclerView 子视图的高度

    我正在尝试制作一个可扩展的 TextView 当用户按下按钮时它会展开 折叠 TextView 和 ImageButton 位于 CardView 中 该 CardView 添加到 RecyclerView 中 展开 折叠效果很好 但现在我
  • ViewPager2 崩溃

    我正在将高级导航组件与 BottomNavigationView 一起使用 In one tab我有ViewPager2 当我第一次单击该选项卡时 效果很好 尽管第二次 来吧 该选项卡应用程序不断崩溃 下面是崩溃日志 我怎样才能解决这个问题