Das Android Asset Packaging Tool ( aapt
) ist in seiner neuesten Version sehr streng geworden und wird jetzt für alle Android-Versionen verwendet. Der aapt-Fehler, den Sie erhalten, wird generiert, weil keine nicht positionellen Formatspezifizierer mehr zulässig sind .
Hier sind einige Ideen, wie Sie das% -Symbol in Ihre Ressourcenzeichenfolgen aufnehmen können.
Wenn Sie keine Formatspezifizierer oder Ersetzungen in Ihrer Zeichenfolge benötigen, können Sie das formatted
Attribut einfach verwenden und auf Folgendes festlegen false
:
<string formatted="false">%a + %a == 2%a</string>
In diesem Fall wird die Zeichenfolge nicht als Formatter
Formatzeichenfolge für verwendet, sodass Sie Ihre% -Symbole nicht maskieren müssen. Die resultierende Zeichenfolge lautet "% a +% a == 2% a".
Wenn Sie das formatted="false"
Attribut weglassen , wird die Zeichenfolge als Formatzeichenfolge verwendet und Sie müssen die% -Symbole maskieren. Dies geschieht korrekt mit double-%:
<string>%%a + %%a == 2%%a</string>
Jetzt aapt
haben Sie keine Fehler , aber je nachdem , wie Sie es verwenden, kann die resultierende Zeichenfolge sein „%% a + %% a == 2 %% a“ , wenn ein Formatter
ohne Format aufgerufen Argumente :
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"
Ohne XML und Code ist es schwierig zu sagen, was genau Ihr Problem ist, aber hoffentlich hilft dies Ihnen, die Mechanismen ein wenig besser zu verstehen.