首先让我为我的英语道歉,它很糟糕所以会有错误 然后我知道这个错误在论坛上出现了数百万次,但请帮助我找到我错过的内容。我正在尝试做简单的面向选项卡的应用程序,我没有太多(错误除外) 非常感谢你
Logcat 说道:
Process: com.ct07.ttn, PID: 8135
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ct07.ttn/com.ct07.ttn.MainActivity}: android.view.InflateException: Binary XML file line #26: Binary XML file line #26: Error inflating class androidx.fragment.app.FragmentContainerView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2958)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3093)
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:1823)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6825)
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:860)
Caused by: android.view.InflateException: Binary XML file line #26: Binary XML file line #26: Error inflating class androidx.fragment.app.FragmentContainerView
Caused by: android.view.InflateException: Binary XML file line #26: Error inflating class androidx.fragment.app.FragmentContainerView
Caused by: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment NavHostFragment: make sure class name exists
at androidx.fragment.app.FragmentFactory.loadFragmentClass(FragmentFactory.java:97)
at androidx.fragment.app.Fragment.instantiate(Fragment.java:670)
at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:57)
at androidx.fragment.app.FragmentManager$3.instantiate(FragmentManager.java:525)
at androidx.fragment.app.FragmentContainerView.<init>(FragmentContainerView.kt:153)
at androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView(FragmentLayoutInflaterFactory.java:53)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:136)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:247)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:226)
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.rInflate(LayoutInflater.java:866)
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 com.ct07.ttn.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:56)
at com.ct07.ttn.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:50)
at com.ct07.ttn.MainActivity.onCreate(MainActivity.kt:19)
at android.app.Activity.performCreate(Activity.java:7144)
at android.app.Activity.performCreate(Activity.java:7135)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2938)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3093)
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:1823)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
2024-05-09 20:08:00.475 8135-8135 AndroidRuntime com.ct07.ttn at android.app.ActivityThread.main(ActivityThread.java:6825)
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:860)
Caused by: java.lang.ClassNotFoundException: NavHostFragment
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at androidx.fragment.app.FragmentFactory.loadClass(FragmentFactory.java:53)
at androidx.fragment.app.FragmentFactory.loadFragmentClass(FragmentFactory.java:94)
... 34 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "NavHostFragment" on path: DexPathList[[zip file "/data/app/com.ct07.ttn-B923InpDx0Na9058GAIYtA==/base.apk"],nativeLibraryDirectories=[/data/app/com.ct07.ttn-B923InpDx0Na9058GAIYtA==/lib/x86_64, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 38 more
package com.ct07.ttn
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
import com.ct07.ttn.databinding.ActivityMainBinding
import com.ct07.ttn.repository.RoomRepository
import com.ct07.ttn.viewmodel.HomeViewModel
import com.ct07.ttn.viewmodel.HomeViewModelProviderFactory
class MainActivity : AppCompatActivity() {
lateinit var homeViewModel: HomeViewModel
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val roomRepository = RoomRepository()
val viewModelProviderFactory = HomeViewModelProviderFactory(application, roomRepository)
homeViewModel = ViewModelProvider(this, viewModelProviderFactory).get(HomeViewModel::class.java)
val navHostFragment = supportFragmentManager.findFragmentById(R.id.homeNavHostFragment) as NavHostFragment
val navController = navHostFragment.navController
binding.bottomNavigationView.setupWithNavController(navController)
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout
android:id="@+id/flFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/bottomNavigationView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/homeNavHostFragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/room_nav_graph" />
</FrameLayout>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="match_parent"
android:layout_height="80dp"
app:menu="@menu/bottom_navigation_menu"
app:itemTextColor="@color/white"
app:itemIconTint="@color/white"
android:background="@color/purple_500"
app:itemActiveIndicatorStyle="@style/App.Custom.Indicator"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<?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"
android:id="@+id/room_nav_graph"
app:startDestination="@id/homeFragment">
<fragment
android:id="@+id/homeFragment"
android:name="com.ct07.ttn.fragments.HomeFragment"
android:label="HomeFragment" >
<action
android:id="@+id/action_homeFragment_to_roomFragment"
app:destination="@id/roomFragment" />
</fragment>
<fragment
android:id="@+id/favoriteFragment"
android:name="com.ct07.ttn.fragments.FavoriteFragment"
android:label="FavoriteFragment" >
<action
android:id="@+id/action_favoriteFragment_to_roomFragment"
app:destination="@id/roomFragment" />
</fragment>
<fragment
android:id="@+id/roomFragment"
android:name="com.ct07.ttn.fragments.RoomFragment"
android:label="RoomFragment" >
<argument
android:name="room"
app:argType="com.ct07.ttn.models.Room"
app:nullable="true" />
</fragment>
</navigation>
我尝试了很多并观看论坛,但我找不到我的问题
Caused by: java.lang.IllegalArgumentException: com.ct07.ttn.models.Room is not Serializable or Parcelable
用于导航参数的自定义类需要实现
Parcelable
或 Serializable
接口。请参阅文档了解导航参数的有效类型。