1. ホーム
  2. android

[解決済み] ハードコードされた文字列 "行 3"、@string リソースを使用する必要があります。

2022-01-30 13:10:12

質問

私は初心者のアンドロイド開発者ですが、eclipseでこのリニアレイアウトを実行しようとしていました。

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

  <LinearLayout
      android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_weight="1">
      <TextView
          android:text="red"
          android:gravity="center_horizontal"
          android:background="#aa0000"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
      <TextView
          android:text="green"
          android:gravity="center_horizontal"
          android:background="#00aa00"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
      <TextView
          android:text="blue"
          android:gravity="center_horizontal"
          android:background="#0000aa"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
      <TextView
          android:text="yellow"
          android:gravity="center_horizontal"
          android:background="#aaaa00"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
  </LinearLayout>

  <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1">
    <TextView
        android:text="row one"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row two"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row three"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row four"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
  </LinearLayout>

</LinearLayout>

そして、気がついたのは.
1) 黄色い線の下 android:text="Yellow"
2) 黄色い線の下 android:text="row four"
トライアングルの警告 [I18N] Hardcoded string "Yellow", should use @string resource " 他の警告も同じです。何か提案はありますか?

解決方法は?

レイアウトファイルの中に文字列をハードコードするのは良い方法とは言えません。 文字列リソースファイルに追加して、レイアウトからそれらを参照する必要があります。

これにより、strings.xmlファイルを編集するだけで、すべてのレイアウトで同時に"Yellow"という単語が出現するように更新することができます。

また、対応言語ごとに別のstrings.xmlファイルを使用できるため、多言語対応にも非常に有効です。

の例です。 res/values/strings.xmlに保存されたXMLファイル。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="yellow">Yellow</string>
</resources>

View に文字列を適用するレイアウト XML です。

<TextView android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="@string/yellow" />

同様に、色も colors.xml に格納し、@color/color_name で参照する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="Black">#000000</color>
</resources>