【发布时间】:2013-07-19 12:58:30
【问题描述】:
当我在 android 布局中添加任何元素时,编译器 (eclipse) 会在元素属性 android:text="Text" 上显示警告
以下警告是什么意思。
"[118N]硬编码字符串"Text",应该使用@string资源"
当我们用“myString%”之类的字符串添加@时,它会出错。
【问题讨论】:
标签: android components warnings
当我在 android 布局中添加任何元素时,编译器 (eclipse) 会在元素属性 android:text="Text" 上显示警告
以下警告是什么意思。
"[118N]硬编码字符串"Text",应该使用@string资源"
当我们用“myString%”之类的字符串添加@时,它会出错。
【问题讨论】:
标签: android components warnings
警告是 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"
【讨论】:
@string/stringname 引用。这也不会给出错误android:text="@%string/hello_world",它将是一个字符串。
%string/hello_world,lint 会警告你
这意味着在您的 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); 在代码中使用该字符串。
【讨论】:
您不会遇到麻烦。但仍然在您的 xml 中使用 @string/yourString 将是一个很好的做法,它会提高您的应用程序性能。
不用担心这些警告。也许android开发人员认为这不是一个好习惯。 但是如果你的应用程序有一天可能支持多语言,使用@string/mystring 是最好的做法。
您需要在string.xml 中声明您的文本,例如:
<string name="hello_world">androiddevelopmentworld!</string>
你需要在 xml 中使用像这样的文本:
android:text="@string/hello_world"
【讨论】:
因为上面的每个人都可能解释过警告,我想我可以解释一下使用字符串资源的优势。如果你的代码像android:text="hello world",假设它是你的应用程序的标题,它在您的应用程序中多次使用,突然您的老板想要更改名称,然后您可能想要更改您已经硬编码的每个位置,通过使用 string resource 您几乎可以更改相同的通过仅更改 字符串的值
【讨论】:
警告说,控件上的文本属性最好使用字符串资源而不是硬编码文本,
这些警告不仅仅是“避免使用'px'作为单位,而是使用'dp'”等等。
开发一个好的应用程序非常有用
【讨论】: