【发布时间】:2014-10-27 15:35:18
【问题描述】:
在我将我的 android 工具升级到最新版本以在 API21 上工作后,尝试编译我的项目导致以下错误:
- update_languages_button_preference_layout.xml:2:注意:您的意思是使用 @+id 而不是 @+android:id?
- update_languages_button_preference_layout.xml:2:错误:为外部包 android:id/layout 创建资源。
- update_languages_button_preference_layout.xml:2:错误:错误:未找到与给定名称匹配的资源(在 'id' 处,值为 '@+android:id/layout')。
问题似乎出在android:id="@+android:id/layout"这一行:用@+id替换@+android:id就足以让项目能够正常编译运行.
然而,对整个代码库的快速搜索发现了项目中使用构造 android:id="@+android:id/... 的其他几个位置。这些显然并没有阻止项目通过所有测试,即使我不能保证它们都仍在使用中。
是否有任何合法使用
android:id="@+android:id可以证明将这些引用保留在我们的 xml 文件中,而不是将它们全部替换为@+id?为什么他们没有引发与第一个文件相同的错误?
【问题讨论】:
-
不,至少
@+android:id/...你可以使用@android:id/...(没有+) 用于特殊ID,如fx:@android:id/list用于ListFragment/Activity@+...表示创建新ID,如果不存在...我看不出创建新的android:idids 的意义 -
谢谢,这确实是我对第一个问题的回答。但是,您知道为什么只有一个这些引用阻止了项目的构建吗?
-
我也面临这个问题。 Android API 21 不接受此声明。我必须回到 SDK for Android 4.4,等到这个问题得到解决。
-
@Phuong:你是什么意思,“等到这可以解决”?唯一的解决办法是更新错误的引用以使用有效的语法。
标签: android xml android-5.0-lollipop android-identifiers