android - PreferencesActivity 的奇怪异常

标签 android

我对我的 preferences.xml 文件进行了一些编辑,没有在 Eclipse 中生成任何语法标志,现在我在尝试扩展我的 PreferencesActivity 时遇到以下奇怪的错误:

E/AndroidRuntime( 3480): java.lang.RuntimeException: 无法启动 Activity Co mponentInfo{com.shipmate/com.shipmate.PreferencesActivity}: java.lang.IllegalArg umentException:无法将 PreferenceCategory 直接添加到 PreferenceCategory

我总是在其他 PreferenceCategory 中有 PreferenceCategory,所以我认为这不是问题所在。它认为我正在将一个 PreferenceCategory“添加”到另一个 PreferenceCategory 是什么意思? XML 中的“添加”是什么意思? IllegalArgument 与此添加有何关系?关于如何隔离此问题的任何想法?

最佳答案

I always have PreferenceCategory's inside other PreferenceCategory's so I don't think that's the problem.

根据我对 Android 源代码的阅读,PreferenceCategory 不能是 PreferenceCategory 的直接子级。此外,您永远不需要它,因为它没有视觉上的好处——让 PreferenceCategory 元素在 XML 中彼此对等,而不是嵌套。

What does it mean that it thinks I'm "adding" one PreferenceCategory to another?

呃,这似乎不言自明。您有一个 PreferenceCategory,并且您正试图将另一个 PreferenceCategory 放入其中。这是通过 PreferenceGroup 上的 addPreference() 方法以代码或通货膨胀完成的。这依次调用 onPrepareAddPreference(),它在 PreferenceCategory 中进行类别中类别检查并抛出异常。

And how does an IllegalArgument relate to this addition?

Android 开发人员选择在这种情况下使用的是 RuntimeException 的特殊风格。例如,他们可以选择 DivideByZeroException,但这会很奇怪。

关于android - PreferencesActivity 的奇怪异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3420139/

相关文章:

android - Hilt 不会注入(inject)作用域 ViewModel

android - React Native 在构建时抛出访问被拒绝错误

Android:为什么我在点击一些按钮后无法在按钮点击时播放声音?

android - java.lang.IllegalStateException : Could not execute method for android:onClick 错误

android - 如何在 TextView 的文本上设置多个跨度(可点击和粗体)

java - 在另一个 Activity 上 setonclicklistener

Android 记事本教程 - 实现搜索功能

java - Android 数据绑定(bind) layout_width 和 layout_height

java - 由 : java. lang.RuntimeException 引起:Parcelable 读取 Serialized 对象时遇到 IOException

android - 如何从MySQL数据库中获取数据并在ListView中列出