Android'de strings.xml dosyasında hata


114

İçinde uzun bir dize ilan ettim string.xmlBir uygulamanın .

Böyle ilan edildi

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

Ancak bu şu hatayı verir:

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

1
hata, dizede çok fazla nokta olduğu için. "hata: Önünde olmayan kesme işareti" sahte bir mesajdır, sorun noktalardadır. Hatırladığım gibi, üç noktadan fazla sonra hata alabilirsiniz.
Dudeist

Yanıtlar:


293

tam dizinizi gönderin. Yine de, bence dizenizde kesme işareti (') var. (\ ') ile değiştirin ve sorunu çözecektir. Örneğin,

//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=195353

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


30
Dize verilerindeki her bir kesme işaretinden kaçtığımız bu aptalca gereksinimden neden kimse bahsetmiyor? CDATA bölümleri içinde bile!
Phil Kulak

2
@PhilKulak heh, örneğin fransızca çok çılgın. Ftw'yi arayıp değiştireceğiz.
Warpzit

4
@PhilKulak Android strings.xml'de, tüm dizeyi <string name="good_example">"This'll work"</string> Referans: developer.android.com/guide/topics/resources/…
situee

Bu, çok sayıda dizeniz olduğunda ve tümünü değiştir seçeneğini kullandığınızda soruna neden olabilir. Cevabımı gör.
Dan Bray

26

Çözüm

İçinde kesme işareti strings.xml olarak yazılmalıdır

\'


Misal

Benim durumumda strings.xml dosyamda bu dizeyle ilgili bir hata oluştu ve düzelttim.

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

Burada uygulamamın bu kodla düzgün bir şekilde oluşturulduğunu görüyorsunuz.

görüntü açıklamasını buraya girin

İşte uygulamamdaki gerçek dize.

görüntü açıklamasını buraya girin


1
Aptalca ben, XML kullandığım için & apos; kullanıyordum ve bu da bir hata.
Chris Westin

12

Kesme işaretinin önüne \ koymalısınız. Bunun gibi \ ', Ayrıca values.xml dosyasını değil de strings.xml dosyasını düzenlediğinizi kontrol edin (android studio, hatayı gösterdiğinde sizi bu dosyaya yönlendirir). Çünkü values.xml dosyasını düzenlerseniz ve tekrar derlemeye çalışırsanız, hata devam eder. Bu son zamanlarda başıma geliyordu.


1
Haha! Bu bana da oldu. Kesme işareti tam da bu nedenle tekrar ortaya çıktı. Beni delirtiyordu.
DrMcCleod

10

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

Kesme işaretlerinden ve tırnak işaretlerinden kaçma

Dizenizde bir kesme işareti veya alıntı varsa, ya ondan kaçmalı ya da tüm dizeyi diğer türden tırnak işaretleri içine almalısınız. Örneğin, işte işe yarayan ve çalışmayan bazı sokmalar:

<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>

6

Bu normal (?<!\\)'ifadeyi, çıkış karaktersiz bir kesme işaretini aramak için kullanın . Önünde ters eğik çizgi bulunmayan bir kesme işareti bulur.


4

Strings.xml'de İbranice (RTL dili) kullanıyorum. Bu karakter için string.xml dosyasını el ile aradım: 'onun önüne kaçış karakterini \ ekledim (şimdi \' gibi görünüyor) ve hala aynı hatayı alıyorum!

Karakter 'için tekrar arama yaptım ve' karakterini \ 'ile değiştirdim (İngilizce yazıyor), çünkü sağdan sola doğru gösterdiği için strings.xml dosyasında' \ böyle görünüyor !!

Sorun çözüldü.


@akauppi, Bu yorum daha çok RTL dil geliştiricileri için, çünkü ekranda karakterleri yanlış sırada göstererek RTL'yi çok iyi işleyemeyen editörlerle karşılaşıyoruz. xml'de uzun İbranice cümle yazmak karışık olabilir
Li3ro

Ah, Sağdan Sola. Şimdi hepsi anlam kazanıyor. Teşekkürler.
akauppi

3
İbranice kesme işaretlerini her iki taraftan da kaçarak çözdük: \ '\
radley

2

Unicode eşdeğerini hem kesme işaretini hem de xml dizesinde desteklenmeyen diğer karakterleri kullanabilirsiniz. Kesme işaretinin eşdeğeri "\ u0027" dir.


1

1. hata için: dizede çıkış karaktersiz kesme işareti

Bulduğum şey, AAPT2 aracının bazen xml'de yanlış satıra işaret ettiği. Yani tüm strings.xml dosyasını düzeltmelisiniz

Android Studio'da, sorunlu dosya kullanımında:

Düzenle-> Bul-> yerine

Sonra ilk alana \ '(veya \ &,>, \ <, \ ")
ikinci koyma' (veya &,>, <,") yazın ve
ardından gerekirse her birini değiştirin. (Veya "tümünü yeniden yerleştirin" )
Sonra birinci alana tekrar '(veya &,>, <, ")
ve ikinci yaza \' yazın ve
ardından gerekirse her birini değiştirin (veya" ile ") durumunda" tümünü değiştirin "

2. diğer sorunlu semboller
için, yanlış işareti bulmayana kadar sonraki her yarım bölümü + yeniden inşa etmek için kullanırım.

Örneğin, "\ update" kaçan bir kelime beklenmedik bir şekilde böyle bir hatayı düşürür :)


1

Basitçe kaçan en iyi cevabı 'ile \'eserlerin ancak tüm ile değiştirin kullanırken çünkü çözümü sevmiyorum 'için \', sadece bir defa çalışır. İkinci kez bırakılacaksın\\' .

Bu nedenle, kullanın: \u0027.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.