来自PreferenceActivity的奇怪例外

时间:2010-08-06 00:15:20

标签: android

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

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

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

1 个答案:

答案 0 :(得分:2)

  

我总是有PreferenceCategory   在其他PreferenceCategory里面,所以我   不要以为那就是问题。

通过阅读Android源代码,PreferenceCategory不能成为PreferenceCategory的直接子项。此外,您永远不应该需要它,因为它没有视觉上的好处 - 让PreferenceCategory元素在XML中彼此对等,而不是嵌套。

  

它认为我是什么意思   “添加”一个PreferenceCategory   另一?

呃,这看起来很不言自明。您有一个PreferenceCategory,并且您正在尝试将另一个PreferenceCategory放入其中。无论是在代码中还是通过通货膨胀,都可以通过addPreference()上的PreferenceGroup方法完成此操作。然后调用onPrepareAddPreference() PreferenceCategoryRuntimeException执行类别类别检查并抛出异常。

  

IllegalArgument如何关联   这个添加?

在这种情况下,Android开发人员选择使用DivideByZeroException的特殊风格。例如,他们本可以选择{{1}},但这本来就很奇怪。