Android Asset Packaging Tool(aapt
)は、最新のリリースで非常に厳密になり、すべての Androidバージョンで使用されるようになりました。取得するaapt-errorは、位置以外のフォーマット指定子を許可しなくなったために生成されます。
リソース文字列に%記号を含める方法をいくつか紹介します。
文字列にフォーマット指定子や置換が必要ない場合は、formatted
属性を使用して、次のように設定できますfalse
。
<string formatted="false">%a + %a == 2%a</string>
この場合、文字列はのフォーマット文字列として使用されFormatter
ないため、%記号をエスケープする必要はありません。結果の文字列は「%a +%a == 2%a」です。
formatted="false"
属性を省略すると、文字列はフォーマット文字列として使用され、%記号をエスケープする必要があります。これはdouble-%で正しく行われます。
<string>%%a + %%a == 2%%a</string>
今、aapt
あなたにエラーを与えていないが、あなたはそれを使用する方法に応じて、結果の文字列をすることができ、「%% A + %% A == 2 %%」場合はFormatter
任意のフォーマットなしで起動された引数:
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"
XMLとコードがないと、問題が何であるかを正確に述べることは困難ですが、うまくいけば、メカニズムを少しよく理解するのに役立ちます。