android - 在这个新闻应用程序中,我不断收到 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"/>
解决方案
你的代码有两个错误
首先,使用相同的变量名命名列表视图和列表文件
// 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
据我了解,如果您想获取目录中的文件列表,请检查此答案
推荐阅读
- .net - 如何优化 .NET EF Core 批量插入?
- sql - 数据块 (AZURE) 到 CSV 中的文本格式
- reactjs - 如何在渲染中与异步数据交互
- unit-testing - ThreadX 使用什么来进行测试?
- testing - 在 JMeter 中获取搜索请求
- jquery - jQuery每次延迟和一次完成回调
- javascript - 使用视差将图像从一侧移动到另一侧
- angularjs - 有没有办法以编程方式将 AngularJS 页面保存为纯 HTML,包含所有内容
- django - Django Rest 处理复杂数据组合的最佳实践
- c# - 如何优雅地使用 CancellationToken 从一个类到另一个类?