chaîne de caractères codée en dur "rangée trois", doit utiliser la ressource @string
je suis un développeur android débutant , j'essayais d'exécuter cette mise en page linéaire dans 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>
Et, j'ai remarqué :
1) ligne jaune sous android:text="Yellow"
2) ligne jaune sous android:text="row four"
le Triangle warn dit [I18N] Hardcoded string "Yellow", should use @string resource "
et de même pour le reste des avertissements.Toute suggestion?
5 réponses
ce n'est pas une bonne pratique de forcer les chaînes de code dans vos fichiers de mise en page. Vous devez les ajouter à un fichier de ressources string et ensuite les référencer à partir de votre mise en page.
ceci vous permet de mettre à jour chaque occurrence du mot "jaune" dans toutes les mises en page en même temps en éditant simplement vos chaînes.fichier xml.
il est aussi extrêmement utile pour supporter plusieurs langues comme chaînes séparées.fichier xml peut être utilisé pour chaque langue.
exemple: Fichier XML enregistré à res/values / strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="yellow">Yellow</string>
</resources>
Cette mise en page XML applique une chaîne de caractères à Afficher:
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/yellow" />
de même, les couleurs doivent être stockées en couleurs.xml puis référencé en utilisant @color / color_name
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="Black">#000000</color>
</resources>
vous devez les créer sous chaîne.xml
<string name="close">Close</string>
vous devez remplacer et faire référence comme ceci
android:text="@string/close"/>
N'utilisez pas @strings même si le fichier XML dit strings.xml, sinon cela ne fonctionnera pas.
ce n'est pas une bonne pratique de forcer les chaînes de code dans vos fichiers/ code de mise en page. Vous devez les ajouter à un fichier de ressources string et ensuite les référencer à partir de votre mise en page.
- cela vous permet de mettre à jour chaque occurrence du même mot dans tous
les mises en page dans le même temps, simplement en modifiant votrestrings.xml
fichier. - il est aussi extrêmement utile pour
supporting multiple languages
comme un séparée destrings.xml file
peut être utilisé pour chaque la langue - le point réel d'avoir le
@string
système, veuillez lire la localisation documentation. Il vous permet de rechercher du texte dans votre application et plus tard la faire traduire. - les chaînes peuvent être internationalisées facilement, permettant à votre application
support multiple languages with a single application package file
(APK).
Avantages
- disons que vous avez utilisé la même chaîne dans 10 endroits différents dans le code. Que faire si vous décidez de modifier? Au lieu de chercher où tout cela a été utilisé dans le projet vous juste le changer une fois et les changements sont reflète partout dans le projet.
- les chaînes n'encombrent pas votre code d'application, le laissant clair et facile à entretenir.
vous pouvez passer en mode Design et sélectionner " Fix " au bas de l'avertissement. Puis un pop up apparaîtra (il semble qu'il va enregistrer la nouvelle chaîne) et voilà, l'erreur est corrigée.
une bonne pratique est d'écrire du texte dans une chaîne de caractères.xml
exemple:
Chaîne de caractères.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="yellow">Yellow</string>
</resources>
et à l'intérieur de la mise en page:
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/yellow" />