안드로이드 XML 백분율 기호 사용하기에 적합한 형식 입니다 %. 해당 배열에

%기호가 사용되는 문자열 배열이 있습니다 . %is 를 사용하기에 적합한 형식 입니다 %. 해당 배열에 여러 문자열 %이 있으면이 오류가 발생합니다.

 Multiple annotations found at this
 line:
 - error: Multiple substitutions specified in non-positional format;
   did you mean to add the formatted="false" attribute?
 - error: Found tag </item> where </string-array> is expected



답변

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"속성 을 생략하면 문자열이 형식 문자열로 사용되므로 % 기호를 이스케이프해야합니다. 이것은 이중 %로 올바르게 수행됩니다.

<string>%%a + %%a == 2%%a</string>

이제 aapt오류는 없지만 사용 방법에 따라 Formatter형식 인수 없이 a 를 호출 하면 결과 문자열은 “%% 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"

xml과 코드가 없으면 정확히 문제가 무엇인지 말하기 어렵지만 바라는 것은 메커니즘을 조금 더 잘 이해하는 데 도움이되기를 바랍니다.


답변

앱에서 리소스의 형식화 된 문자열을 사용하도록하려면 xml을 수정해야합니다. 예를 들어

<string name="app_name">Your App name, ver.%d</string>

로 교체해야합니다

<string name="app_name">Your App name, ver.%1$d</string>

자세한 내용 은 이것을 볼 수 있습니다 .


답변

XML 파서에 %%를 사용하여 %를 이스케이프 할 수 있지만 장치에 두 번 표시됩니다.

한 번 표시하려면 다음 형식을 시도하십시오. \%%

예를 들어

<string name="zone_50">Fat Burning (50\%% to 60\%%)</string> 

Fat Burning (50% to 60%)장치 와 같이 표시됩니다


답변

사용하다

<string name="win_percentage">%d%% wins</string>

얻을

80% wins 형식화 된 문자열로.

String.format()방법을 사용하여 대신 숫자를 삽입했습니다 %d.


답변

strings.xml 파일에서 원하는 유니 코드 부호를 사용할 수 있습니다.

예를 들어 퍼센트 부호의 유니 코드 숫자는 0025입니다.

<string name="percent_sign">&#x0025;</string>

여기 에서 유니 코드 기호의 전체 목록을 볼 수 있습니다


답변

백분율 기호를 벗어나려면 %% 만 있으면됩니다.

예를 들면 다음과 같습니다.

String.format("%1$d%%", 10)

“10 %”를 반환


답변

정확히 당신의 문제는 아니지만 비슷한 문제입니다.

문자열 항목에 둘 이상의 서식이있는 경우 “% s”를 여러 번 사용해서는 안됩니다.

하지 말아야 할 것 :

<string name="entry">Planned time %s - %s (%s)</string>

하다 :

<string name="entry">Planned time %1$s - %2$s (%3$s)</string>