android - AndroidX PreferenceFragmentCompat 找不到片段的 id id/内容的视图
问题描述
我提到了这个文件。
设置活动.kt:
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.PreferenceFragmentCompat
class SettingsActivity : AppCompatActivity() {
class DispatcherFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
this.setPreferencesFromResource(R.xml.settings_items, rootKey)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
this.supportFragmentManager
.beginTransaction()
.replace(R.id.content, DispatcherFragment())
.commit()
}
}
settings_items.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
<SwitchPreferenceCompat
app:key="notifications"
app:title="Enable message notifications"/>
<Preference
app:key="feedback"
app:title="Send feedback"
app:summary="Report technical issues or suggest new features"/>
</androidx.preference.PreferenceScreen>
当我运行程序时,我得到了一个错误:Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f07004c (<my_package_name>:id/content) for fragment DispatcherFragment{24598125 (ae4eec60-a4c6-404b-b899-7fb0e6b378f2) id=0x7f07004c}
看来我做了和 Google Docs 一样的事情,但没有得到预期的结果。
这有什么遗漏吗?或者还有其他文件没有提到的注意事项?
解决方案
原因:java.lang.IllegalArgumentException:没有为片段 DispatcherFragment{24598125 (ae4eec60-a4c6-404b-b899-7fb0e6b378f2) id=0x7f07004c} 找到 id 0x7f07004c (:id/content) 的视图
这意味着 this.supportFragmentManager.replace(R.id.content, DispatcherFragment())
无法找到用 定义的视图R.id.content
。在您的情况下,
传入的 id必须是您的.supportFragmentManager.replace()
R.id.content
setContentView()
Activity
就像是:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//...
}
布局是:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
推荐阅读
- python - Python SciKit中基于用户和项目的基本数据过滤
- azure - Azure Active Directory B2C 定价
- c# - 如何在下拉列表中显示上标 2?
- c - 尝试声明全局结构时,初始值设定项元素不是常量
- linux - 为Tomcat配置环境变量的最佳方法
- java - 无法获取图像 URL 并在 Firebase 数据库中显示
- android - For 循环两次而不是一次添加 JSON 响应
- git - 远程回购的权限被拒绝。无法从 repo 存储库中读取
- python - 机器学习算法,它给出从单个输入映射的多个输出
- r - R基于多个条件更新data.frame列,使用ifelse的问题