Фрагмент Nav Host Duplicate id - PullRequest
0 голосов
/ 11 марта 2020

Я уже нашел решение для этого. Но это заняло довольно много времени и много ссылок, и я оставлю это здесь.

Это приложение, которое имеет Ошибка выброса привязки данных MVVM, связанная с Nav Controller . Фрагмент

первоначально дал Ошибка дублирующегося идентификатора на NavHostFrament в строке привязки данных в моей деятельности. Удаление либо android: id, либо android: name дало либо ошибку сборки, либо ошибку времени выполнения.

Activity.kt

     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 не установлен ошибка.

1 Ответ

0 голосов
/ 11 марта 2020

Я передал тег фрагмента в отдельный файл 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" />

Что касается файла Activity . По этой ссылке ... 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
...