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

m1n*_*f4n 9 android inner-classes preference preferencescreen android-xml

如果要在某个layout.xml文件中访问自定义视图,可以使用以下两个选项:

  1. 视图属于它自己的类.然后你做<package.name.MyView android:layout_width= ... />
  2. 视图是内部类: <view class="package.name.OuterClass$MyView" android:layout_width= ... />

现在我想在一个内部做同样的事情<PreferenceScreen>.第一种方法效果很好,但我想将所有自定义Preference类放在我的PreferenceActivity中.我试过<Preference class="package.name.OuterClass$MyPreference" ... />(也用'.'而不是'$')<package.name.OuterClass.MyPreference ... />,但都失败了.

有没有人有想法?

avi*_*mak 3

在处理Views膨胀时,LayoutInflater寻找“view”->“class”情况:

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

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

它在其方法中使用反射createItem(),这可能就是第一个案例适合您的原因。