Mvvm 导航主机片段重复id
我已经找到了解决办法。但我花了相当长的时间和大量的参考文献才偶然发现,所以我将把这个留在这里 这是一个与导航控制器相关的MVVM数据绑定抛出错误的应用程序 片段最初在我的活动中的数据绑定行上的NavHostFrament上出现重复id错误。删除android:id或android:name会导致生成错误或运行时错误 Activity.ktMvvm 导航主机片段重复id,mvvm,fragment,navigation-drawer,android-databinding,Mvvm,Fragment,Navigation Drawer,Android Databinding,我已经找到了解决办法。但我花了相当长的时间和大量的参考文献才偶然发现,所以我将把这个留在这里 这是一个与导航控制器相关的MVVM数据绑定抛出错误的应用程序 片段最初在我的活动中的数据绑定行上的NavHostFrament上出现重复id错误。删除android:id或android:name会导致生成错误或运行时错误 Activity.kt binding = DataBindingUtil.setContentView(this, R.layout.activity_home)
binding = DataBindingUtil.setContentView(this, R.layout.activity_home)
.
.
.
val navController = findNavController(R.id.nav_host_fragment)
Layout.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时,它开始抛出NavController not set错误。我将片段标记转移到一个单独的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" />
与
我遇到了同样的问题,然后我意识到我使用setContentView()方法和DataBindingUtil.setContentView()方法设置了activitiy的内容视图。我移除了其中一个,问题就解决了 我将代码替换为:
setContentView(R.layout.activity_main)
val binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
致:
你如何改变这些碎片?我没有得到任何错误,但也没有看到任何内容
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
setContentView(R.layout.activity_main)
val binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
val binding = DataBindingUtil.setContentView(this, R.layout.activity_main)