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

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

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

最佳答案

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


根据我对Android源代码的阅读,PreferenceCategory不能是PreferenceCategory的直接子代。而且,您永远都不需要这样做,因为这样做没有视觉上的好处-将PreferenceCategory元素在XML中彼此相对,而不是嵌套。


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


嗯,这似乎很不言而喻。您有一个PreferenceCategory,并且您正在尝试在其中放置另一个PreferenceCategory。可以通过addPreference()上的PreferenceGroup方法完成此操作,无论是通过代码还是通过通货膨胀。依次调用onPrepareAddPreference(),它在PreferenceCategory中进行类别中的检查并引发异常。


  以及IllegalArgument是如何关联的
  除了这个?


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

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

10-10 16:05