gpt4 book ai didi

mvvm - 导航主机片段重复 id

转载 作者:行者123 更新时间:2023-12-03 10:25:18 25 4
gpt4 key购买 nike

我已经找到了解决方案。但它花了很长时间和很多引用资料才偶然发现,所以我将把它留在这里。

这是一个具有 的应用程序与导航 Controller 相关的 MVVM 数据绑定(bind)抛出错误 .

片段最初给出 NavHostFrament 上的重复 ID 错误 在我事件的数据绑定(bind)线上。删除 android:id 或 android:name 会导致构建错误或运行时错误。

事件.kt

     binding = DataBindingUtil.setContentView(this, R.layout.activity_home)
.
.
.
val navController = findNavController(R.id.nav_host_fragment)

布局.xml
  <fragment 
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation"/>

虽然片段行给了我一个 lint 检查以转换为 FragmentContainerView 它开始抛出 导航 Controller 未设置 错误。

最佳答案

我将片段标签转移到一个单独的 xml 文件中。虽然我相信这不是必需的。

nav_header.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation" />


至于 事件文件。
按照这个链接... https://issuetracker.google.com/issues/142847973#comment4

更换
val navController = findNavController(R.id.nav_host_fragment)



val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController

关于mvvm - 导航主机片段重复 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60629133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com