Android导航中没有<对话框>。

问题描述 投票:0回答:1

从2.1.0版本开始,导航组件中就支持DialogFragment。

我正在遵循官方指南。创建目的地

但在任何新的版本上,我都没有这样的选项。我目前使用的是2.2.2,但也尝试过alpha和beta版本。当我手动写的时候,我的导航.xml是这样的。

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/navigation"
    app:startDestination="@id/fragmentTitle">

    <fragment
        android:id="@+id/fragmentTitle"
        android:name="com.kabiskac.test.title.TitleFragment"
        android:label="Welcome"
        tools:layout="@layout/fragment_title">
        <action
            android:id="@+id/action_fragmentTitle_to_askPinDialogFragment"
            app:destination="@+id/askPinDialogFragment"/>
    </fragment>


    <dialog
        android:id="@+id/askPinDialogFragment"
        android:name="com.kabiskac.test.dialogs.AskPinDialogFragment">
    </dialog>

</navigation>

但在XML编辑器中却这样写

Element dialog is not allowed here

而且我得到了这个运行时错误。

...

Caused by: java.lang.IllegalStateException: Could not find Navigator with name "dialog". You must call NavController.addNavigator() for each navigation type.

我使用的是Android Studio 4.0和Gradle 4.0.0.0.

我到底做错了什么?

android android-dialogfragment android-dialog android-navigation
1个回答
0
投票

我在我的gradle文件中找到了这个选项。

dependencies {
  def nav_version = "2.2.2"

  // Kotlin
  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
}

我添加了java库,解决了这个问题。

  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"
© www.soinside.com 2019 - 2024. All rights reserved.