首页 > 解决方案 > 在这个新闻应用程序中,我不断收到 InflateException

问题描述

java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.newsapp/com.example.newsapp.ui.MainActivity}:android.view.InflateException:com.example.newsapp:layout/ 中的二进制 XML 文件第 25 行activity_main:com.example.newsapp:layout/activity_main 中的二进制 XML 文件第 25 行:在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java 的 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449) 处膨胀类片段时出错:3601) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor. java:95) 在 android.os.Handler 的 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)。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方法)在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)

   class MainActivity : AppCompatActivity() {

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

    val newsRepository = NewsRepository(ArticleDatabase(this))
    val viewModelProviderFactory = NewsViewModelProviderFactory(newsRepository)
    viewModel = ViewModelProvider(this, viewModelProviderFactory).get(NewsViewModel::class.java)
    bottomNavigationView.setupWithNavController(nav_host_fragment_container.findNavController())
}


<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">

    <fragment
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/nav_host_fragment_container"
        app:defaultNavHost="true"
        app:navGraph="@navigation/news_nav_graph"/>

</FrameLayout>

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottomNavigationView"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    app:backgroundTint="@color/grey"
    app:menu="@menu/bottom_navigation_menu"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"/>

标签: androidkotlin

解决方案


你的代码有两个错误

首先,使用相同的变量名命名列表视图和列表文件

// look at that in these lines, both of them had the same variable name        
private lateinit var list: ListView
val list = dir.listFiles()

二、本行出现异常的部分

val list = dir.listFiles() // dir.listFiles() returns null 

据我了解,如果您想获取目录中的文件列表,请检查此答案


推荐阅读