在xml文件中实例化内部类(Preference)

时间:2011-08-30 19:56:32

标签: android inner-classes android-xml preference preferencescreen

当您想要访问某个layout.xml文件中的自定义视图时,您有两个选择:

  1. 视图属于它自己的类。然后你做<package.name.MyView android:layout_width= ... />
  2. 视图是内部类:<view class="package.name.OuterClass$MyView" android:layout_width= ... />
  3. 现在我想在<PreferenceScreen>内做同样的事情。第一种方式效果很好,但我想将所有自定义Preference类放在我的PreferenceActivity。我尝试<Preference class="package.name.OuterClass$MyPreference" ... />(也使用'。'代替'$')以及<package.name.OuterClass.MyPreference ... />,但都失败了。

    有没有人有想法?

1 个答案:

答案 0 :(得分:2)

在处理Views充气时,LayoutInflater会查找“视图” - &gt; “阶级”案例:

View createViewFromTag(View parent, String name, AttributeSet attrs) {
    if (name.equals("view")) {
        name = attrs.getAttributeValue(null, "class");
    } ...

偏好PreferenceInflater没有,所以这是针对“类”的情况。

它在createItem()方法中使用反射,这可能就是为什么第一种情况适合你。