为什么 Android Studio 会警告我添加 Android Studio 已经自动添加的代码?

Why does Android Studio give me warnings to add code that Android Studio already added automatically?

一旦我从 Palette drag/drop 一个按钮进入 XML 文件,Android Studio 在我点击 "Show Warnings and Errors" 时给我以下错误:

Message: [I18N] Hardcoded string "Button", should use `@string` resource Suggested Fixes: 
- Extract string resource
- Suppress: Add tools:ignore="HardcodedText" attribute

在文本中的按钮代码中,当我 dragged/dropped 按钮进入 XML 文件时,以下 Android Studios 会自动进入:

android:text="Button"

我是否总是必须单击 "Suppress" 选择,因为我不知道他们希望我为 "Extract String Resource" 选择更改什么。还是要我更改 Android Studio 自动设置的代码?

您可以这样做而不是抑制:

  1. res/values/strings.xml中添加字符串资源:

    <string name="button_label">Button</string>

  2. 将上述资源设置为您 Button:

    的文本

    android:text="@string/button_label"

这不是错误,这只是警告,表示您应该使用字符串资源,而不是代码中的硬编码字符串。但是你可以使用 harddcoded 字符串,一切都会正常工作。
使用 String 资源可以简化您的生活。例如,当您想要本地化您的应用程序时。见截图。 using string resources 您可以设置字符串资源。到 TextView.Text,然后用名称 values, values-ru, values-uk 等创建几个 android resource directories。 在这个目录中,您应该为每个目录创建文件 strings.xml。 并像

一样覆盖你的字符串

<string name="message"> Message </string>values
<string name="message"> Сообщение </string>values-ru 等等

现在,如果您将设备语言从 en 更改为 ru,在您的应用中 textView 将被写入 "Сообщение"

它在其他几种情况下也很有用。

Message: [I18N] Hardcoded string "Button", should use @string resource

建议的修复:

  • 提取字符串资源

您应该始终从 res/values/strings.xml 中的 string.xml 中选择字符串。这不是对字符串进行硬编码的正确方法,将其放入 string.xml 文件有助于将来 本地化

  • 添加tools:ignore="HardcodedText"属性

当您使用工具时,它实际上并没有设置要查看的文本,而只是在预览 window 中显示它的视觉效果,当您 运行 应用程序时,您不会在工具中添加文本。