【问题标题】:Instantiating an inner class (Preference) in xml file在 xml 文件中实例化内部类(首选项)
【发布时间】:2011-11-07 02:54:11
【问题描述】:

当您想访问某个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 ... />,但都失败了。

有人有想法吗?

【问题讨论】:

  • 确保你的内部类是静态的。
  • 这两种方法仍然无效。奇怪的是,'class' 属性被完全忽略了,即使它包含废话。

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


【解决方案1】:

在处理Views inflating 时,LayoutInflater 寻找“视图”->“类”案例:

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

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

它在 createItem() 方法中使用反射,这可能就是第一种情况适合您的原因。

【讨论】:

  • 这太令人恼火了。
猜你喜欢
  • 2011-05-03
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2020-11-20
  • 1970-01-01
  • 2014-06-18
相关资源
最近更新 更多