
在我将我的android工具升级到最新版本以便在API21上工作后,尝试编译我的项目导致以下错误:
update_languages_button_preference_layout.xml:2: note: dID you mean to use @+ID instead of @+androID:ID?update_languages_button_preference_layout.xml:2: error: creating resource for external package androID: ID/layout.update_languages_button_preference_layout.xml:2: error: Error: No resource found that matches the given name (at ‘ID’ with value ‘@+androID:ID/layout’).
问题似乎是androID:ID =“@ androID:ID / layout”:用@ ID替换@ androID:ID就足以能够正常编译和运行项目了.
然而,通过整个代码库的快速搜索揭示了项目中的一些其他位置,其中使用构造androID:ID =“@ androID:ID / ….这些显然没有阻止项目通过所有测试,甚至如果我不能保证它们仍在使用中.
>有没有合法使用androID:ID =“@ androID:ID可以证明将这些引用留在我们的xml文件中,而不是用@ ID替换它们?
>为什么他们没有提出与第一个文件相同的错误?
解决方法:
不,你应该永远不要在你的应用程序中使用@ androID:ID. androID命名空间是为框架保留的.对于应用程序来说,这从来都不是安全的,现在会生成编译错误.
对于一些背景知识,在androID命名空间内生成新的ID会将它们放在现有的androID命名空间ID之后的未使用空间中.这将在框架中添加新ID之前正常工作,此时您的内部ID将与实际框架ID重叠并导致奇怪的问题.
至于其他情况,那些也应该产生错误. AAPT中可能存在错误.无论如何,您应该从您的资源中删除所有@ androID实例.
总结以上是内存溢出为你收集整理的@ android:id有合法用途吗?全部内容,希望文章能够帮你解决@ android:id有合法用途吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)