【问题标题】:How to use a bottom sheet dialog from navigation ui component如何使用导航 ui 组件中的底部工作表对话框
【发布时间】:2019-11-23 13:17:28
【问题描述】:

我正在使用导航图进行内部导航。现在我想使用 nav_graph 打开一个底部工作表对话框片段。

我尝试添加

 <dialog
        android:id="@+id/ItemBottomSheetFragment"
        android:name="xxxxxxx.fragments.InvoiceItemBottomSheetFragment"
        tools:layout="@layout/fragment_invoice_item_bottom_sheet"
        android:label="ItemBottomSheetFragment" />

但是当我启动它时,我的应用程序崩溃了。 崩溃报告

    2019-11-23 18:42:13.393 16111-16111/xxxxxxxxxxxxx E/AndroidRuntime: FATAL EXCEPTION: main
    Process: xxxxxxxxxxxxx, PID: 16111
    java.lang.RuntimeException: Unable to start activity ComponentInfo{xxxxxxxxxxxxx/xxxxxxxxxxxxx.MainActivity}: android.view.InflateException: Binary XML file line #17: Binary XML file line #17: Error inflating class fragment
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: android.view.InflateException: Binary XML file line #17: Binary XML file line #17: Error inflating class fragment
     Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
     Caused by: java.lang.RuntimeException: Exception inflating xxxxxxxxxxxxx:navigation/nav_graph line 266
        at androidx.navigation.NavInflater.inflate(NavInflater.java:90)
        at androidx.navigation.NavController.setGraph(NavController.java:447)
        at androidx.navigation.NavController.setGraph(NavController.java:429)
        at androidx.navigation.fragment.NavHostFragment.onCreate(NavHostFragment.java:226)
        at androidx.fragment.app.Fragment.performCreate(Fragment.java:2528)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:843)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1135)
        at androidx.fragment.app.FragmentManagerImpl.addFragment(FragmentManagerImpl.java:1391)
        at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManagerImpl.java:3123)
        at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:134)
        at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:360)
        at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:339)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:537)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
        at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:303)
        at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:284)
        at xxxxxxxxxxxxx.MainActivity.onCreate(MainActivity.kt:19)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
2019-11-23 18:42:13.395 16111-16111/xxxxxxxxxxxxx E/AndroidRuntime:     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.IllegalStateException: Could not find Navigator with name "dialog". You must call NavController.addNavigator() for each navigation type.
        at androidx.navigation.NavigatorProvider.getNavigator(NavigatorProvider.java:98)
        at androidx.navigation.NavInflater.inflate(NavInflater.java:100)
        at androidx.navigation.NavInflater.inflate(NavInflater.java:132)
        at androidx.navigation.NavInflater.inflate(NavInflater.java:81)

【问题讨论】:

    标签: android android-navigation android-architecture-navigation android-navigation-graph


    【解决方案1】:

    之前我使用的是导航 UI 版本 2.0.0

    升级到 2.1.0 后,一切正常

    【讨论】:

    • 在 2.1.0 版本中引入。所以它抛出运行时异常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2020-09-17
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2021-05-19
    相关资源
    最近更新 更多