2016-07-19 14 views
3

Ich bin Platzhalter% 1 $ d in string.xml für int Wert verwenden, und dann möchte ich in demselben TextView% Zeichen anzuzeigen, so % es ist. Also ich benutze es so.Verwenden Platzhalter mit% -Zeichen in string.xml für String.format()

<string name="uploadProgress">%1$d&#37;<string> 

Jetzt in Java Code habe ich es so verwendet.

int progress = 10; 
textView.setText(String.format(getString(R.string.uploadProgress), progress)); 

Aber es zeigt:

java.util.UnknownFormatConversionException: Umwandlung:

ich mit Versuchte:

  1. % statt &#37;
  2. ein Leerzeichen zwischen %1$d und &#37; (Aber ich will nicht, Raum tatsächlich.)

Aber kein Glück. Wie kann ich das erreichen? Ich habe eine andere SO Fragen zur Lösung gesucht, aber ich bin nicht in der Lage, eine bestimmte zu finden.

+0

Versuchen '\ u0025' anstelle von' '%? –

+2

Android verwendet nicht die & # Syntax. Wie Bob sagte, benutze \ u0026quot; –

+0

Sehen Sie sich auch ['getString (int, Objekt ...)'] (https://developer.android.com/reference/android/content/Context.html#getString (int ,% 20java.lang.Object ...)) – tynn

Antwort

5

Ich bin auch in diesem geraten. Es gibt zwei Möglichkeiten, ein literales Prozentzeichen in XML-String-Ressourcen zu umgehen.

Für Ihren Fall (eine Zeichenfolge mit Parametern, z. B. %1$d) sollten Sie %% verwenden, um das Prozentzeichen Literal zu umgehen.

Wenn Ihre Zeichenfolge keine Parameter enthält, sollten Sie \u0025 verwenden, um das wörtliche Prozentzeichen zu umgehen.

Wenn Sie %% in einer Zeichenfolge ohne Parameter verwenden, löst getString() es als Literal %% auf, anstatt es zu umgehen. Wenn Sie \u0025 in einer Zeichenfolge mit Parametern verwenden, wird getString() abstürzen, versuchen, das % als Formatparameter zu behandeln.

2

Wenn Ihre Zeichenfolgenressource keine Parameter hat, können Sie das Attribut "formatiert =" false "verwenden.

In Ihrem Fall müssen Sie Sie verwenden zwei%

+2

Ich kann nur Ihre Antwort aufwerten Es ist absolut richtig. Aber die Antwort, die @kcoppock Gave Es ist spezifischer & Beschreibender, der anderen auch in der Zukunft helfen kann und das SO-Ziel auch erreichen wird. Danke für die richtige Right Andswer – GreenRobo

+0

Das ist fair genug. :) –

Verwandte Themen