Standardgebietsschema für getRelativeTimeSpanString

8

Ich überschreibe das Gebietsschema meiner App mit:

%Vor%

Aber es scheint, dass getRelativeTimeSpanString nicht mit dem Anwendungskontext arbeitet und stattdessen das Systemgebietsschema verwendet.

    
user1458180 27.02.2014, 15:32
quelle

3 Antworten

12

Ihre Lösung war fast korrekt.

Da die Zeichenfolgen jedoch aus den Systemressourcen geladen werden, müssen Sie die Konfiguration der Systemressourcen aktualisieren. Unten ist was ich getan habe:

%Vor%

(Hinweis: Ab Jelly Bean MR1 wird empfohlen,

zu verwenden %Vor%

, um das Gebietsschema zu ändern, anstatt das Element direkt festzulegen.)

    
Thorstenvv 18.06.2014, 16:18
quelle
4

Ich hatte dieses Problem heute und brauchte mehrere Stunden, um "zu lösen".

Ich empfehle Ihnen, wenn Sie stattdessen getRelativeTimeSpanString (context, long, boolean) verwenden können. Es war nicht mein Fall, da die resultierende Zeichenfolge nicht mit getRelativeTimeSpanString (long) übereinstimmt.

Meine Workaround erfordert, dass Sie einige interne Ressourcen von Android ein paar Strings in Ihren Code kopieren, so dass es ziemlich ärgerlich sein wird, wenn Sie viele Sprachen unterstützen müssen.

Ich habe den aktuellen Quellcode von Android (4.4 r1) verfolgt und DateUtils extrahiert und geändert, damit Sie es wie folgt verwenden können:

%Vor%

Damit erhalten Sie dasselbe Ergebnis wie getRelativeTimeSpanString (long).

Um MyDateUtils zu erstellen, habe ich nur Folgendes beibehalten:

  

public static CharSequence getRelativeTimeSpanString (lange Zeit, lange Zeit, lange minResolution, int-Flags, Kontext c)

Ich habe der Methode den Kontext hinzugefügt und dann die Systemressourcen für Kontextressourcen und alle internen Androiden-Zeichenfolgen für meine eigenen Zeichenfolgen geändert (die den Androiden entsprechen, aber keine Möglichkeit finden, sie so zu verwenden, wie sie intern ).

  

private statische final String getRelativeDayString (Ressourcen r, langer Tag, lange heute)

Bewahrte auch diese Methode, wie sie vom vorherigen verwendet wurde. Hier habe ich auch die Zeichenfolgen geändert.

Zum Kopieren einfügen

Dies ist meine Implementierung von MyDateUtils:

%Vor%

Ein Werteordner string.xml add:

%Vor%

Als Beispiel für eine andere Sprache wie Portugiesisch auf Werte-pt-Ordner string.xml:

%Vor%     
Antilope 23.04.2014 08:46
quelle
0

Ich benutze benutzerdefinierte Methode, um dies zu behandeln:

%Vor%

und ich habe das Datum als Parameter für diese Methode festgelegt:

%Vor%

diese Return-String nach Ort, wie ich wollte! hoffe helfen.

    
Zahra.HY 23.05.2016 13:34
quelle