android xml文件中的警告
Posted
技术标签:
【中文标题】android xml文件中的警告【英文标题】:Warning in android xml file 【发布时间】:2013-07-19 12:58:30 【问题描述】:当我在 android 布局中添加任何元素时,编译器 (eclipse) 会在元素属性 android:text="Text"
上显示警告
以下警告是什么意思。
"[118N]硬编码字符串"Text",应该使用@string资源"
当我们用“myString%”之类的字符串添加@时,它会出错。
【问题讨论】:
【参考方案1】:警告是 Lint 警告。它警告可能的错误。如果你愿意,你可以忽略它。但我觉得这是一个有用的信息。
不是将字符串值硬编码到 textview 中,而是在 strings.xml 中定义字符串并引用 @strings/mystring 之类的相同
引用自
http://tools.android.com/tips/lint
Android Lint 是 ADT 16(和 Tools 16)中引入的一个新工具,它可以扫描 Android 项目源代码中的潜在错误。它既可以作为命令行工具使用,也可以与 Eclipse(如下所述)和 IntelliJ(详细信息)集成。该架构有意独立于 IDE,因此有望与其他 IDE、其他构建工具以及持续集成系统集成。
这是 Lint 检查列表
http://tools.android.com/tips/lint-checks
解决
在 res/values/strings.xml 中定义资源
<string name="hello_world">Hello world!</string>
在xml中
android:text="@string/hello_world"
【讨论】:
但是当我们用类似 "%myString" 的字符串添加 @ 时会出错。 @LASIAF 我不明白。警告与错误不同。 但是当我们用像“%myString”这样的字符串添加@时,它会出错。然后警告转换为错误 @LASIAF 这是一个错误。您的字符串资源由@string/stringname
引用。这也不会给出错误android:text="@%string/hello_world"
,它将是一个字符串。
@LASIAF 如果你再次使用%string/hello_world
,lint 会警告你【参考方案2】:
这意味着在您的 res/values 文件夹中,您应该创建一个 strings.xml 文件并在其中放置如下定义:
<?xml version="1.0"?>
<resources>
<string name="my_string">Text</string>
</resources>
然后使用 @string/my_string
在 xml 属性中引用它,或使用 getResources().getString(R.string.my_string);
在代码中使用该字符串。
【讨论】:
【参考方案3】:您不会遇到麻烦。但仍然在您的 xml 中使用 @string/yourString
将是一个很好的做法,它会提高您的应用程序性能。
不用担心这些警告。也许android开发人员认为这不是一个好习惯。 但是如果你的应用程序有一天可能支持多语言,使用@string/mystring 是最好的做法。
您需要在string.xml
中声明您的文本,例如:
<string name="hello_world">androiddevelopmentworld!</string>
你需要在 xml 中使用像这样的文本:
android:text="@string/hello_world"
【讨论】:
【参考方案4】:因为上面的每个人都可能解释过警告,我想我可以解释一下使用字符串资源的优势。如果你的代码像android:text="hello world"
,假设它是你的应用程序的标题,它在您的应用程序中多次使用,突然您的老板想要更改名称,然后您可能想要更改您已经硬编码的每个位置,通过使用 string resource 您几乎可以更改相同的通过仅更改 字符串的值
【讨论】:
【参考方案5】:警告说,控件上的文本属性最好使用字符串资源而不是硬编码文本, 这些警告不仅仅是“避免使用'px'作为单位,而是使用'dp'”等等。 开发一个好的应用程序非常有用
【讨论】:
以上是关于android xml文件中的警告的主要内容,如果未能解决你的问题,请参考以下文章
如何解决XML文件中的警告提示“No grammar constraints (DTD or XML Schema) referenced in the document.”
在 android 设备上修改 zip 文件中的 xml 文件