[I18N] Hardcoded string "★★", should use @string resource

エラー警告

エラーメッセージ

 状態:解決済  閲覧数:3,260  投稿日:2014-03-29  更新日:2014-03-29
[I18N] Hardcoded string "★★", should use @string resource


内容


ハードコーディングに関する警告
・(表面上の)動作支障は発生しない
・レイアウトファイルに文字列をハードコードすることは、良い習慣ではない
・具体的には、文字列リソースファイルに追加して、レイアウトから参照するべき
・こうすることで、文字列に変更が生じた際の対応等が容易になる(効率的管理の追求)
・また「strings.xml」に分離することで、多言語対応も可能になる(ソースコードに文字列を直書きしている場合は、実質不可)
※ハードコード【hard code】(ハードコーディング) … 特定の動作環境を決め打ちして、その動作環境で動作させることを前提とした処理やデータをソースコードの中に書き込んでしまうプログラミング方式

実際に遭遇した例1

 閲覧数:665 投稿日:2014-03-29 更新日:2014-03-29

警告メッセージ


[I18N] Hardcoded string "保存", should use @string resource


対応


対象ファイル
▼/res/layout/test1_1.xml
<Button  
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="保存"
   />

   ↓
<Button  
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/save"
   />


▼/res/values/strings.xml
<resources>

   <string name="hello">Hello World, SetContentView1_1Activity!</string>
   <string name="app_name">SetContentView1_1</string>
</resources>

   ↓
<resources>

   <string name="hello">Hello World, SetContentView1_1Activity!</string>
   <string name="app_name">SetContentView1_1</string>
   <string name="save">保存</string>
</resources>


実際に遭遇した例2

 閲覧数:677 投稿日:2014-03-29 更新日:2014-03-29

内容


・日本語直書しているのに、「警告メッセージ … [I18N] Hardcoded string "保存", should use @string resource」が表示されない


対応


・対象ファイル 「▼/res/layout/test.xml」を新規保存すれば、警告メッセージが表示される
・後は、上記対応例の通り


SDK Manager: failed to install

This text field does not specify an inputType or a hint



週間人気ページランキング / 3-4 → 3-10
順位 ページタイトル抜粋 アクセス数
1 Android FAQ 14
2 ★★ を型に解決できません | エラー(エラー) 5
3 Unexpected error while launching logcat | エラー(エラー) 4
3 この行に複数マーカーがあります | エラー(エラー) 4
4 R.java was modified manually! Reverting to generated version! | エラー(エラー) 3
5 [エラー] W/ResourceType(308): Failure getting entry for 0x7f030001 (t=2 e=1) in package 0: 0xffffffb5 | エラー(エラー) 2
5 Sorry! The application ★★ has stopped unexpectedly.Please try again. | エラー(エラー) 2
5 エラー対応 2
5 型 ○○親クラス名.△△ネストクラス名 は継承された抽象メソッド AsyncTask<第1引数,第2引数,第3引数>.doInBackground(Object...) を実装する必要があります | エラー(エラー) 2
6 Project build error: Non-resolvable parent POM: Failure to find | エラー 1
6 adb shell … error: device not found | Android Debug Bridge (adb) 1
6 インポートされた ★★ は見つかりません | エラー 1
6 ログイン 1
6 アプリをビルドして実行する | アプリ化(環境構築) 1
6 Project has no project.properties file! Edit the project properties to set one. | エラー(エラー) 1
6 Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties | エラー(エラー) 1
6 E/AudioPlayer(★★): FAILED renaming /mnt/sdcard/tmprecording.3gp to /android_asset/●●.mp3 | エラー 1
6 E/Trace(★★): error opening trace file: No such file or directory | エラー(エラー) 1
6 emulator-5554 disconnected! Cancelling | エラー(エラー) 1
6 The process android.process.acore has stopped unexpectedly. Please try again. | エラー(エラー) 1
2026/3/11 5:05 更新