R.string.value wird als Zahl angezeigt

7

Für den folgenden Code beabsichtigte ich, das Systemdatum zu erhalten und es gemäß der Formatierung des aktuellen Gebietsschemas anzuzeigen, es ist nur das für das R.string.date . Im Emulator erscheint es immer als eine lange Zahl (etwas wie 821302314) anstelle von "Date:", die ich bereits in string.xml externalisiert habe. Kann mir jemand helfen, einen Blick darauf zu werfen, warum das so ist?

%Vor%

layout.xml

%Vor%

strings.xml

%Vor%     
Liliw 26.09.2011, 15:11
quelle

4 Antworten

11

R.string.date ist in der Tat ein int , Sie verpassen den Aufruf an getText() oder getString() :

%Vor%

Noch besser: Erstellen Sie die Zeichenfolge nicht in Ihrem Code, sondern verwenden Sie eine Vorlage mit getString(int resId, Object... formatArgs) :

%Vor%

und in deinem string.xml :

%Vor%     
Philipp Reichart 26.09.2011 15:19
quelle
6

Ja, Sie erhalten die ID der Zeichenfolge, wenn Sie R.string.date verwenden. Wie in den Dokumenten

angegeben
  

Sie können entweder getString (int) oder getText (int) verwenden, um eine Zeichenfolge abzurufen. getText (int) behält jeden auf die Zeichenfolge angewendeten Rich-Text-Stil bei.

Beispiel:

%Vor%

Lesen Sie hier darüber nach: getString

    
David Olsson 26.09.2011 15:19
quelle
5

Um den Zeichenfolgenwert von xml zu erhalten, sollten Sie this.getString(R.id.nameOfString) aufrufen. In Ihrem Fall wäre das mTimeText.setText(this.getString(R.string.date) + " " + dateFormat.format(date));

    
Raunak 26.09.2011 15:25
quelle
0

Um alle "R.string. *" auf "getString (R.string. )" zu überschreiben * habe ich ein wenig Regex geschrieben.

Diese Regex ignoriert auch die Strings, die bereits einen "getString" haben.

%Vor%

Sie müssen nur Strg + Umschalt + R in Android Studio drücken, um das Replace-Terminal zu öffnen und den Regex oben als "Find" und als "Replacement" den Regex darunter einzufügen.

%Vor%

Vergessen Sie nicht, das Kontrollkästchen "regulärer Ausdruck" zu aktivieren.

Für mich hat das perfekt funktioniert. Aber das "Find Regex" hat ein Problem, es findet nur R.string, wenn es mit einem Leerzeichen beginnt. Ich weiß nicht, wie ich das lösen soll, denn wenn ich das Leerzeichen lösche, finde ich auch die R.string, die schon den "getString" hat.

Einige können helfen, die Regex zu verbessern oder haben einen besseren Weg, dies zu erreichen.

    
Christian Meyer 21.06.2017 21:32
quelle

Tags und Links