我遇到了一个问题,包括通过android layout xml文件中的include标签进行不同的布局。在指定布局引用(@layout / ...)时,我在Eclipse ADT中收到InflateException,并出现以下错误: InflateException:您必须指定有效的布局参考。布局ID @ layout / func_edit_simple_calculator_toolbox无效。
引用应该是有效的,因为我从我的其他布局列表中选择它并且没有输入它。我正在使用android sdk v2.1
这些是布局文件
func_edit_simple_calculator_toolbox.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:layout_width="wrap_content">
<TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content"android:layout_height="wrap_content">
<Button android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1"></Button>
<Button android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2"></Button>
<Button android:id="@+id/Button03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3"></Button>
<Button android:id="@+id/Button04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="+"></Button>
</TableRow>
<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:id="@+id/Button05" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="4"></Button>
<Button android:id="@+id/Button06" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="5"></Button>
<Button android:id="@+id/Button07" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="6"></Button>
<Button android:id="@+id/Button08" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="-"></Button>
</TableRow>
</TableLayout>
function_editor_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.calculoid.FunctionView android:id="@+id/function_view" android:layout_width="fill_parent" android:layout_height="fill_parent"/>
<include android:id="@+id/include01" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/func_edit_simple_calculator_toolbox"></include>
</LinearLayout>
有人知道可能出现什么问题吗?
提前致谢
答案 0 :(得分:115)
如果有人发现此线程发现此错误:
Caused by: android.view.InflateException: You must specifiy a layout in the include tag: <include layout="@layout/layoutID" />
确保你这样做:
<include layout="@layout/your_layout" />
和不是:
<include android:layout="@layout/your_layout" />
layout
不在其前面有android:
。
答案 1 :(得分:106)
我想我应该提一下我是如何解决同样的问题的。试图清理项目,但没有工作。我有很大的布局名称(chrono_first_small_field),这也不是原因。
关闭Eclipse,然后再次打开它,这很有效。
这比实现onMeasure方法更有意义: - )
答案 2 :(得分:1)
我没有看到任何直接的错误,所以这有点奇怪。我只能想到两件事:1)您是否尝试使用较短的文件名?对文件名中可接受的内容有一些限制,例如:没有大写字符或符号,为了确保兼容性和文件名长度可能是其中之一。 2)您是否尝试删除包含中的一些android:...语句,并将其保留在<include layout="@layout/..."/>
?实际上,您并不需要在include中指定其高度和宽度,因为它已在导入的布局文件中定义。
答案 3 :(得分:0)
我已“解决”了这个问题,但我不知道究竟有什么帮助。我的布局文件没有经过任何重大改写,实际上包含相同的内容。我在问题消失之前唯一值得注意的改变是在我的自定义视图类中覆盖onMeasure(int,int)方法,实现只调用setMeasuredDimension(100,100)。
答案 4 :(得分:0)
使用 -clean 选项启动eclipse,您的问题已修复保证。
启动时间大约需要30秒答案 5 :(得分:0)
检查空
<include> </include>
标签,(可能由自动代码格式化引起)。
它们可以出现在xml中的“隐藏”位置。
答案 6 :(得分:0)
对于那些使用Xamarin Studio的人 - 我从一个不同的项目添加了一堆AXML文件,并且也得到了完全相同的错误。我只是关闭并重新启动Xamarin Studio(PC),这也解决了这个问题。有趣的是,不同的IDE具有相同的问题。
答案 7 :(得分:0)
对我来说,问题是布局的名称是错误的:我使用&#34; - &#34;而不是&#34; _&#34;。在我尝试部署应用程序之前,AndroidStudio没有告诉我错误。