Ошибка связывания ресурсов Android activity_main.xml: 19: ошибка: атрибут android: defaultNavHost не найден после добавления компонентов навигации

Недавно я был очень взволнован новыми захватывающими инструментами для Android. Среди них меня зацепила «Навигация». Я подумал, что это лаборатория кода было бы замечательно для начала. Тем не менее, как абсолютный новичок я нашел это немного интригующим, поскольку в нем ничего не говорилось о пошаговой настройке компонентов навигации. Поэтому я начал разбивать его на небольшие части и начинать воплощать в отдельный проект.

Код моей основной деятельности

class MainActivity : AppCompatActivity() {

 override fun onCreate(savedInstanceState: Bundle?) {
 super.onCreate(savedInstanceState)
 setContentView(R.layout.activity_main)

setSupportActionBar(toolbar)
}

override fun onSupportNavigateUp(): Boolean =
  findNavController(R.id.my_nav_host_fragment).navigateUp()
}

в моем основном макете деятельности

<fragment
  android:layout_width = "match_parent"
  android:layout_height = "0dp"
  android:layout_weight = "1"
  android:id = "@+id/my_nav_host_fragment"
  android:name = "androidx.navigation.fragment.NavHostFragment"
  android:navGraph = "@navigation/mobile_navigation"
  android:defaultNavHost = "true"
  />

после этого в журнале отображается ошибка Ошибка связывания ресурсов Android activity_main.xml: 19: ошибка: атрибут android: defaultNavHost не найден после добавления компонентов навигации

Убедитесь, что вы добавили app:startDestination = "@id/homeFragment" в свой файл navigation.xml

AskNilesh 12.10.2018 14:56
3
1
8 844
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ваша ошибка не требует пояснений

Android resource linking failed activity_main.xml:19: error: attribute android:defaultNavHost not found

Причина в том, что вы указали неправильный атрибут android:navGraph = "@navigation/mobile_navigation" android:defaultNavHost = "true", который должен быть app:navGraph = "@navigation/mobile_navigation" app:defaultNavHost = "true".

Если вы отредактируете эти атрибуты, вы увидите, что ваш проект успешно построен, и в вашем файле навигационного графика отображается как хост навигации по умолчанию , надеюсь, он ответит на ваш вопрос.

Если вы уже указали правильные атрибуты; т.е.

app:navGraph = "@navigation/mobile_navigation"
app:defaultNavHost = "true"

& вы по-прежнему получаете эту ошибку, выполните следующие действия:

  1. В Project build.gradle:

    dependencies { classpath "androidx.navigation: navigation-safe-args-gradle-plugin: 2.2.1" }

  2. В приложении build.gradle:

    def nav_version = "2.2.2"

    реализация "androidx.navigation: navigation-fragment-ktx: $ nav_version"

    реализация "androidx.navigation: navigation-ui-ktx: $ nav_version"

Другие вопросы по теме