我对我的 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/