অ্যান্ড্রয়েড অ্যাসেট প্যাকেজিং সরঞ্জাম ( aapt
) তার সর্বশেষ প্রকাশে খুব কঠোর হয়ে উঠেছে এবং এখন সমস্ত অ্যান্ড্রয়েড সংস্করণে ব্যবহৃত হয় । আপনি যে অ্যাপট-ত্রুটিটি পেয়েছেন তা উত্পন্ন হয়েছে কারণ এটি আর অবস্থানহীন বিন্যাস নির্দিষ্টকরণের অনুমতি দেয় না ।
আপনি কীভাবে আপনার সংস্থানগুলিতে%-সিম্বল অন্তর্ভুক্ত করতে পারেন তা এখানে কয়েকটি ধারণা are
আপনার স্ট্রিংয়ে যদি কোনও ফর্ম্যাট স্পেসিফায়ার বা বিকল্পের প্রয়োজন না হয় আপনি কেবল formatted
গুনটি ব্যবহার করতে পারেন এবং এটিকে সেট করতে পারেন false
:
<string formatted="false">%a + %a == 2%a</string>
এই ক্ষেত্রে স্ট্রিংটি বিন্যাসের স্ট্রিং হিসাবে ব্যবহৃত হয় না Formatter
সুতরাং আপনাকে আপনার%-চিহ্নগুলি থেকে বাঁচতে হবে না। ফলাফলযুক্ত স্ট্রিংটি "% a +% a == 2% a"।
আপনি যদি formatted="false"
বৈশিষ্ট্যটি বাদ দেন তবে স্ট্রিংটি ফর্ম্যাট স্ট্রিং হিসাবে ব্যবহৃত হয় এবং আপনাকে%-চিহ্নগুলি থেকে বাঁচতে হবে। এটি ডাবল-% দিয়ে সঠিকভাবে করা হয়েছে:
<string>%%a + %%a == 2%%a</string>
এখন aapt
আপনাকে কোনও ত্রুটি দেয় না তবে আপনি কীভাবে এটি ব্যবহার করেন তার উপর নির্ভর করে ফলাফলের স্ট্রিংটি যদি Formatter
কোনও বিন্যাসের আর্গুমেন্ট ছাড়াই আহ্বান করা হয় তবে "%% a + %% a == 2 %% a" হতে পারে :
Resources res = context.getResources();
String s1 = res.getString(R.string.str);
// s1 == "%%a + %%a == 2%%a"
String s2 = res.getString(R.string.str, null);
// s2 == "%a + %a == 2%a"
কোনও এক্সএমএল এবং কোড ছাড়া আপনার সমস্যাটি ঠিক কী তা বলা মুশকিল তবে আশা করি এটি আপনাকে প্রক্রিয়াগুলি আরও ভালভাবে বুঝতে সহায়তা করে।