خطأ في ملف strings.xml في Android



getstring() android (7)

لقد أعلنت سلسلة طويلة في string.xml لأحد التطبيقات.

أعلن مثل هذا

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

لكن هذا يعطي الخطأ التالي:

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

Answer #1

يجب عليك وضع \ قبل علامة اقتباس أحادية. مثل هذا \ "، تحقق أيضًا من أنك تقوم بتحرير strings.xml وليس قيمًا. xml (يوجهك استوديو Android إلى هذا الملف عند إظهار الخطأ). لأنه إذا قمت بتحرير القيم. xml ومحاولة ترجمة مرة أخرى ، يستمر الخطأ. كان هذا يحدث لي في الآونة الأخيرة.


Answer #2

1. للخطأ: apostrophe unescaped في السلسلة

ما وجدته هو أن أداة AAPT2 تشير إلى صف خاطئ في xml ، أحيانًا. لذا يجب عليك تصحيح ملف strings.xml بأكمله

في Android Studio ، في استخدام ملف المشكلة:

تحرير> find-> استبدال

ثم اكتب في الحقل الأول \ '(أو \ & ،> ، \ ، \ ")
في المرتبة الثانية "(أو & ،> ، <،")
ثم استبدال كل إذا لزم الأمر. (أو "reptlace جميع" في حالة مع ')
ثم في الحقل الأول مرة أخرى وضع "(أو & ،> ، <،")
وفي الكتابة الثانية
ثم استبدال كل إذا لزم الأمر. (أو "استبدال جميع" في حالة مع ')

2. لرموز إشكالية أخرى
يمكنني استخدام تعليق كل جزء نصف التالي + إعادة بناء حتى لن أجد علامة خاطئة.

على سبيل المثال ، هربت كلمة "تحديث" بشكل غير متوقع مثل هذا الخطأ :)


Answer #3

قد تتمكن من استخدام unicode مكافئ لكل من علامة اقتباس أحادية وأحرف أخرى غير معتمدة في سلسلة xml. المرادف Apostrophe هو "\ u0027".


Answer #4

حل

يجب كتابة apostrophes في strings.xml كـ

\'


مثال

في حالتي كان لدي خطأ في هذه السلسلة في strings.xml الخاص بي وقمت بإصلاحه .

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

سترى هنا تطبيقي بشكل صحيح مع هذا الرمز.

في ما يلي السلسلة الفعلية في تطبيقي.



Answer #6

أنا استخدم العبرية (لغة RTL) في strings.xml. لقد بحثت في string.xml يدويًا عن هذا الحرف: "من إضافة char escape \ infront منه (الآن يبدو مثل \ ') ولا يزال يواجه نفس الخطأ!

لقد بحثت مرة أخرى عن الحرف "واستبدلت الحرف" مع كتابة (eng) ، حيث تظهر حقًا لليسار يبدو وكأنه "\ in the strings.xml !!

تم حل المشكلة.


Answer #7

أين تستخدم الفاصلة العليا الخاصة بك سلسلة؟ لا أستطيع العثور على ذلك. يرجى نشرها. إذا كنت بحاجة إلى استخدام علامة اقتباس أحادية في السلسلة ، فما عليك سوى استخدام تسلسل الهروب "\" مثل هذا.

أعتقد أن الصورة أعلاه ستوضح شكوكك.





escaping