正在 Android Studio 中初始化自定义视图:类型为 xml 的预期资源
Initializing custom view in Android Studio: Expected resource of type xml
我有一个名为 IconView
的自定义视图,它具有以下初始化构造函数:
public class IconView extends RelativeLayout implements Checkable {
...
public IconView(Context context, AttributeSet attrs, boolean useDefaultImage) {
super(context, attrs);
inflateLayout(context);
...
为了从 XML 初始化 AttributeSet
实例以构建视图,我使用 getResources().getXml(R.layout.icon_view), false);
。
这编译成功并正确运行。但是,Android studio 突出显示代码并向我显示此错误:
错误的详细描述在这里:
类型为 xml 的预期资源较少... (Ctrl+F1)
报告两类问题:
提供了错误类型的资源标识符。例如,当
调用 Resources.getString(int id),你应该通过
R.string.something,不是R.drawable.something。
传错
一个方法的常量,该方法期望一组特定的
常数。例如,当调用 View#setLayoutDirection 时,
参数必须是 android.view.View.LAYOUT_DIRECTION_LTR 或
android.view.View.LAYOUT_DIRECTION_RTL.
问题:
虽然代码有效,但我不知道如何重写它,以便 Android Studio 中的错误消失。这个错误在视觉上很烦人,那么我该如何摆脱它呢?
Resources#getXml(int id)
用于获取 xml 类型的资源,它位于 xml
资源文件夹中。另一方面,您在此处传递 R.layout.icon_view
,即 layout 资源。
这里使用getResources().getLayout(R.layout.icon_view)
,错误就会消失。
P.S.: Resources#getLayout()
上的文档说明如下:
This function is really a simple wrapper for calling getXml(int) with a layout resource.
看来这是某种与 lint 相关的问题。无论哪种方式,getLayout()
都不会导致此错误。
我有一个名为 IconView
的自定义视图,它具有以下初始化构造函数:
public class IconView extends RelativeLayout implements Checkable {
...
public IconView(Context context, AttributeSet attrs, boolean useDefaultImage) {
super(context, attrs);
inflateLayout(context);
...
为了从 XML 初始化 AttributeSet
实例以构建视图,我使用 getResources().getXml(R.layout.icon_view), false);
。
这编译成功并正确运行。但是,Android studio 突出显示代码并向我显示此错误:
错误的详细描述在这里:
类型为 xml 的预期资源较少... (Ctrl+F1) 报告两类问题:
提供了错误类型的资源标识符。例如,当 调用 Resources.getString(int id),你应该通过 R.string.something,不是R.drawable.something。
传错 一个方法的常量,该方法期望一组特定的 常数。例如,当调用 View#setLayoutDirection 时, 参数必须是 android.view.View.LAYOUT_DIRECTION_LTR 或 android.view.View.LAYOUT_DIRECTION_RTL.
问题:
虽然代码有效,但我不知道如何重写它,以便 Android Studio 中的错误消失。这个错误在视觉上很烦人,那么我该如何摆脱它呢?
Resources#getXml(int id)
用于获取 xml 类型的资源,它位于 xml
资源文件夹中。另一方面,您在此处传递 R.layout.icon_view
,即 layout 资源。
这里使用getResources().getLayout(R.layout.icon_view)
,错误就会消失。
P.S.: Resources#getLayout()
上的文档说明如下:
This function is really a simple wrapper for calling getXml(int) with a layout resource.
看来这是某种与 lint 相关的问题。无论哪种方式,getLayout()
都不会导致此错误。