Android Varlık Paketleme Aracı ( aapt
) son sürümünde çok katı hale geldi ve şimdi tüm Android sürümleri için kullanılıyor . Artık konumsal olmayan biçim belirleyicilerine izin vermediği için aldığınız aapt hatası oluşturulur .
% -Symbol kaynağını kaynak dizelerinize nasıl ekleyebileceğinize dair birkaç fikir.
Dizenizde herhangi bir biçim belirtecine veya değiştirmeye ihtiyacınız yoksa, formatted
özniteliği kullanabilir ve şu şekilde ayarlayabilirsiniz false
:
<string formatted="false">%a + %a == 2%a</string>
Bu durumda dize, bir format dizesi olarak kullanılmaz, Formatter
bu nedenle% -symbols öğesinden kaçmanız gerekmez. Sonuçta elde edilen dize "% a +% a == 2% a" dır.
formatted="false"
Özniteliği atlarsanız, dize bir biçim dizesi olarak kullanılır ve% -symbols'tan kaçmanız gerekir. Bu,% double ile doğru şekilde yapılır:
<string>%%a + %%a == 2%%a</string>
Şimdi aapt
size hata vermiyor, ancak nasıl kullandığınıza bağlı olarak, Formatter
herhangi bir biçim bağımsız değişkeni olmadan çağrılırsa , elde edilen dize "%% a + %% a == 2 %% a" olabilir :
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"
Herhangi bir xml ve kod olmadan sorunun tam olarak ne olduğunu söylemek zor ama umarım bu mekanizmaları biraz daha iyi anlamanıza yardımcı olur.