web-dev-qa-db-fra.com

Erreur dans le fichier strings.xml dans Android

J'ai déclaré une longue chaîne dans string.xml d'une application.

Déclaré comme ça

<string name="terms">PLEASE READ THESE TERMS OF USE CAREFULLY  BY ACCESSING THIS .................</string>

Mais cela donne l'erreur suivante:

error: Apostrophe not preceded by \ (in PLEASE READ THESE TERMS OF USE CAREFULLY
101
Subrat

postez votre chaîne complète. Cependant, je suppose que votre chaîne contient un caractère apostrophe ('). remplacez-le par (\ ') et le problème sera résolu. par exemple,

//strings.xml
<string name="terms">
Hey Mr. Android, are you stuck?  Here, I\'ll clear a path for you.  
</string>

Ref:

http://www.mrexcel.com/forum/showthread.php?t=19535

https://code.google.com/archive/p/replicaisland/issues/48

254
Priyank

Solution

Les apostrophes dans strings.xml doivent être écrits ainsi:

\'



Exemple

Dans mon cas, j'ai eu une erreur avec cette chaîne dans mon strings.xml et je l'ai corrigée.

<item>Most arguments can be ended with three words, "I don\'t care".</item>

Ici, vous voyez que mon application se construit correctement avec ce code.

enter image description here

Voici la chaîne réelle dans mon application.

enter image description here

23
JGallardo

Vous devez mettre\avant une apostrophe. Comme ceci\', vérifiez également que vous modifiez le fichier strings.xml et non le fichier values.xml (le studio Android vous dirige vers ce fichier lorsqu'il affiche l’erreur). En effet, si vous modifiez values.xml et essayez de compiler à nouveau, l'erreur persiste. Cela m'arrivait récemment.

12
Walmac

https://developer.Android.com/guide/topics/resources/string-resource.html#FormattingAndStyling

Échappe aux apostrophes et aux guillemets

Si vous avez une apostrophe ou une citation dans votre chaîne, vous devez soit y échapper, soit inclure toute la chaîne dans l'autre type de guillemets. Par exemple, voici quelques cas qui fonctionnent et ne fonctionnent pas:

<string name="good_example">"This'll work"</string>
<string name="good_example_2">This\'ll also work</string>
<string name="bad_example">This doesn't work</string>
<string name="bad_example_2">XML encodings don&apos;t work</string>
9
situee

J'utilise l'hébreu (langage RTL) dans strings.xml. J'ai cherché manuellement le string.xml pour ce caractère: 'que j'ai ajouté le caractère d'échappement\infront (maintenant il ressemble à \') et j'ai toujours la même erreur!

J'ai cherché à nouveau le caractère 'et j'ai remplacé le caractère' par\'(écriture en anglais), car il affiche un sens de droite à gauche, il ressemble à cela' dans le fichier strings.xml !!

Problème résolu.

4
Li3ro

Où est ton apostrophe utilisé string? Je ne trouve pas ça. s'il vous plaît poster. Si vous devez utiliser une apostrophe dans votre chaîne, utilisez simplement la séquence d'échappement "\ '" comme ceci.

n’a pas = n’a pas en XML, il suffit de regarder les chaînes Le dernier élément de .xml.

enter image description here

Je pense que l'image ci-dessus effacera vos doutes.

Le moyen le plus simple de créer Android ListView

3
c49

Utilisez cette expression rationnelle (?<!\\)' pour la recherche d'une apostrophe non échappée. Il trouve une apostrophe qui n'est pas précédée d'une barre oblique inverse.

3
Elad Finish

Vous pourrez peut-être utiliser l'équivalent unicode des caractères apostrophe et autres qui ne sont pas pris en charge par la chaîne xml. L'équivalent de l'Apostrophe est "\ u0027".

2
Photon Point

1. pour erreur: apostrophe non échappée dans la chaîne

ce que j'ai trouvé, c'est que l'outil AAPT2 pointe parfois sur une mauvaise ligne dans XML. Donc, vous devez corriger le fichier entier strings.xml

Dans Android Studio, utilisation de fichier problématique:

Éditer-> trouver-> remplacer

Puis écrivez dans le premier champ\'(ou\&,>,\<,\")
en deuxième position '(ou &,>, <, ")
puis remplacez-les si nécessaire (ou "reptlacez tous" dans le cas où vous avez ')
Puis dans le premier champ, mettez à nouveau '(ou &,>, <, ")
et en deuxième écriture\'
puis remplacez-les si nécessaire (ou "remplacez tout" dans le cas où vous avez ')

2. Pour les autres symboles problématiques
J'avais l'habitude de commenter chaque demi-partie suivante + de reconstruire jusqu'à ce que je ne trouve pas le mauvais signe.

Par exemple. un mot échappé "\ update" supprime de manière inattendue une telle erreur :)

1
CodeToLife

La meilleure réponse de simplement échapper à la ' avec \' fonctionne mais je n’aime pas la solution car lors de l’utilisation tout remplacer par ' à \', cela ne fonctionne qu'une fois. La deuxième fois, vous vous retrouvez avec \\'.

Par conséquent, utilisez: \u0027.

0
Dan Bray