Java Kotlin中setupActionBarWithNavController存在问题

Java Kotlin中setupActionBarWithNavController存在问题,java,android,kotlin,android-fragments,kotlin-coroutines,Java,Android,Kotlin,Android Fragments,Kotlin Coroutines,我正在用Kotlin和Android Studio创建一个应用程序。每个依赖项都依赖于它的最新版本。我正在尝试使用Android Jetpack导航组件标签自定义应用程序工具栏的标签。在myMainActivity.kt中,我有这个代码 //MainActivity.kt 包com.michaelgrigoryan.roomdbapp 导入androidx.appcompat.app.appcompat活动 导入android.os.Bundle 导入androidx.navigation.fi

我正在用Kotlin和Android Studio创建一个应用程序。每个依赖项都依赖于它的最新版本。我正在尝试使用Android Jetpack导航组件标签自定义应用程序工具栏的标签。在my
MainActivity.kt
中,我有这个代码

//MainActivity.kt
包com.michaelgrigoryan.roomdbapp
导入androidx.appcompat.app.appcompat活动
导入android.os.Bundle
导入androidx.navigation.findNavController
导入androidx.navigation.ui.setupActionBarWithNavController
类MainActivity:AppCompatActivity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setupActionBarWithNavController(findNavController(R.id.fragment))
}
}
在我的
列表片段中

//ListFragment.kt
包com.michaelgrigoryan.roomdbapp.fragments.list
导入android.os.Bundle
导入androidx.fragment.app.fragment
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入androidx.navigation.fragment.findNavController
导入com.michaelgrigoryan.roomdbapp.R
导入kotlinx.android.synthetic.main.fragment_list.view*
类ListFragment:Fragment(){
覆盖创建视图(
充气器:布局充气器,容器:视图组?,
savedInstanceState:捆绑?
):查看{
//为该碎片膨胀布局
val视图=充气机。充气(R.layout.fragment_列表,容器,错误)
view.floatingActionButton.setOnClickListener{
findNavController().导航(R.id.action\u listFragment\u到\u addFragment)
}
返回视图
}
}
在我的
AddFragment

//添加片段
包com.michaelgrigoryan.roomdbapp.fragments.add
导入android.os.Bundle
导入androidx.fragment.app.fragment
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入androidx.navigation.fragment.findNavController
导入com.michaelgrigoryan.roomdbapp.R
导入kotlinx.android.synthetic.main.fragment_add.view*
类AddFragment:Fragment(){
覆盖创建视图(
充气器:布局充气器,容器:视图组?,
savedInstanceState:捆绑?
):查看{
//为该碎片膨胀布局
val视图=充气机。充气(R.layout.fragment\u添加,容器,错误)
view.saveButton.setOnClickListener{
findNavController().导航(R.id.action\u addFragment\u to\u listFragment)
}
返回视图
}
}
我的应用甚至没有启动。这是该错误的LOGCAT输出

2020-10-11 12:03:51.219 11162-11162/com.michaelgrigoryan.roomdbapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.michaelgrigoryan.roomdbapp, PID: 11162
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.michaelgrigoryan.roomdbapp/com.michaelgrigoryan.roomdbapp.MainActivity}: java.lang.IllegalStateException: Activity com.michaelgrigoryan.roomdbapp.MainActivity@6d0f1b does not have a NavController set on 2131230870
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.IllegalStateException: Activity com.michaelgrigoryan.roomdbapp.MainActivity@6d0f1b does not have a NavController set on 2131230870
        at androidx.navigation.Navigation.findNavController(Navigation.java:61)
        at androidx.navigation.ActivityKt.findNavController(Activity.kt:30)
        at com.michaelgrigoryan.roomdbapp.MainActivity.onCreate(MainActivity.kt:13)
        at android.app.Activity.performCreate(Activity.java:8000)
        at android.app.Activity.performCreate(Activity.java:7984)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
编辑
这是我的布局
活动主


fragment_list.xml


fragment_add.xml


编辑2
android:name=“androidx.navigation.fragment.NavHostFragment”
添加到主布局中的片段后,我遇到了一个新问题。应用程序正确加载,但现在当我单击FloatingAction按钮更改片段时,它崩溃了。
这是我的logcat输出

2020-10-11 12:36:33.348 11853-11853/com.michaelgrigoryan.roomdbapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.michaelgrigoryan.roomdbapp, PID: 11853
    java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.material.floatingactionbutton.FloatingActionButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at com.michaelgrigoryan.roomdbapp.fragments.add.AddFragment.onCreateView(AddFragment.kt:32)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
        at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
        at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

在主活动布局中,使用:

   <fragment
        android:id="@+id/fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"

发布您的布局,这是一个有效的问题,但我有另一个错误。当我点击floatingAction按钮在应用程序之间切换时crashes@michael.grigoryan这是另一种问题。用图表、fragment_list.xml布局和完整的stacktrace发布一个新问题。查看编辑2