Sunday, July 5, 2015

Cara Mengatasi [I18N] Hardcoded string "Button", should use @string resource

MS - Ketika belajar pemrograman android. Terutama menggunakan eclipse. Setelah membuat Android Project Application baru dan menempatkan satu buah Button, maka muncul kesalahan. Kesalahan tersebut tertulis [I18N] Hardcoded string "Button", should use @string resource.

Cara Mengatasi [I18N] Hardcoded string "Button", should use @string resource

Sebagai orang yang baru belajar android pasti bingung. Saya juga mengalaminya. Baru belajar sedikit kok keluar kesalahan tersebut. Berikut cuplikan source code nya
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.newa.MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="66dp"
        android:layout_marginTop="52dp"
        android:text="Button" />

</RelativeLayout>

Dan langsung muncul [I18N] Hardcoded string "Button", should use @string resource. Setelah cari sana-sini. Ternyata kesalahan tersebut terletak pada android:text="Button" pada baris ke 19.

Cara mengatasi [I18N] Hardcoded string "Button", should use @string resource yakni dengan membuat string terlebih dahulu. Membuat string disini dengan cara klik folder values pada project explorer lalu klik strings.xml.
Folder Values - strings.xml

Setelah ketemu dan membuka strings.xml, biasanya yang terbuka tab Resources. Anda bisa menambahkan string baru pada tab Resources ini dengan klik tombol Add. Namun jika Anda ingin langsung mengetikkan kode nya maka klik tab strings.xml dan tambahkan string secara manual.

Kode sebelum
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">newa</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>

</resources>


Kode sesudah ditambah string baru
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">newa</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
 <string name="button">Button Here</string>
 
</resources>


Jadi kita menambah string baru dengan nama button. String button ini memiliki nilai Button Here. Nah begitulah kira-kira penjelasannya. Maaf masih belajar juga hehe... Setelah menambahkan string tersebut jangan lupa untuk menyimpannya terlebih dahulu dengan Ctrl+S. Jika belum disimpan maka kita tidak bisa memanggilnya pada Layout - activity_main.xml .

Beralih pada activity_main.xml pada Folder Layout. Kesalahan  [I18N] Hardcoded string "Button", should use @string resource dapat kita atasi dengan mengubah android:text="Button" menjadi android:text="@string/button" kemudian simpan / Ctrl+S dan kesalahan tersebut akan hilang.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.newa.MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="66dp"
        android:layout_marginTop="52dp"
        android:text="@string/button" />

</RelativeLayout>

Dan jika beralih pada tab Graphical Layout maka nilai text pada button tersebut menjadi Button Here. Demikianlah cara mengatasi kesalahan [I18N] Hardcoded string "Button", should use @string resource. Cukup mudah dan simple bagi yang mengerti. Namun cukup rumit bagi saya yang baru belajar. Alhamdulillah dapat ilmu baru.

Ditulis oleh paijojr