Eclipse Android开发 - [I18N]硬编码字符串" TextView",应该使用@string资源

时间:2014-08-09 17:32:13

标签: java android xml eclipse sdk

我是android开发的新手,并尝试创建一个名为new_layout.xml的新布局,我实际上在Lynda培训课程中看到了下面的代码,它运行良好。但每次我关闭Eclipse和AVD并在以后启动它时,我会在xml文件中出现一些错误:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />  <!-- [I18N] Hardcoded string "TextView", should use @string resource  -->

<EditText   <!-- This text field does not specify an inputType or a hint -->
    android:id="@+id/editText1"
    android:layout_width="wrap_content"   <!-- Use a layout_width of 0dp instead of wrap_content for better performance -->
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:ems="10" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

以下是突然出现的其他错误的屏幕截图: ![在此输入图像说明] [1]

2 个答案:

答案 0 :(得分:4)

Eclipse鼓励您使用strings.xml文件来声明字符串,而不是将它们硬编码到其他项目文件中,就像您正在做的那样。

可以在项目的strings.xml中找到res/values/strings.xml文件。只需将字符串放在此文件中,如this example所示,并在其他项目文件中引用这些字符串。

这是一个它可能是什么样子的例子:
new_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/textView" />  <!-- [I18N] Hardcoded string "TextView", should use @string resource  -->

<EditText   <!-- This text field does not specify an inputType or a hint -->
    android:id="@+id/editText1"
    android:layout_width="wrap_content"   <!-- Use a layout_width of 0dp instead of wrap_content for better performance -->
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:ems="10" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button" />

res / values / strings.xml

<resources>
    <string name="textView">TextView</string>
    <string name="button">Button</string>
</resources>

由于截图没有正确链接,我只有标题可以使用,所以希望这会有所帮助。

答案 1 :(得分:1)

硬编码字符串,缺少内容描述等等都没有错误,但Lint 警告与应用程序的可用性相关。请咨询lint docs以了解更多信息。

示例:您可以将相同的字符串放入/res/values和(例如)/res/values-de文件夹中。如果设备语言是德语,系统将从使用-de限定的文件夹中获取字符串。对字符串进行硬编码意味着无论设备设置如何,它都将保持不变。

这不是错误,而是可用性问题。同样适用于所有Lint警告。