Ich habe eine Anwendung, die benutzerdefinierten Ausnahmen, wie diese verwendet:Verwenden von Ressourcen in Ausnahmen
public class SomeException extends Exception{
private int iCode;
private String iMessage;
public SomeException(){
iCode = 201;
iMessage = **//Get the localized string R.string.error_201??**
}
@Override
public String getMessage() {
return iMessage;
}
@Override
public int getCode() {
return iCode;
}
}
Natürlich, ich will lo die Fehlermeldung lokalisieren. Ich habe mögliche Lösungen, aber keine von ihnen befriedigt mich.
1) Übergeben Sie "Context" an den Konstruktor, und tun Sie ctx.getString (R.string.error_201) -> Fehler, wie diese Ausnahmen manchmal von MODEL-Klassen geworfen werden, so dass sie keinen Kontext haben
2) Übergeben Sie "Kontext" beim Abrufen der Nachricht in getMessage() -Funktion, -> Fehler, Es ist notwendig, die Super-Methode zu überschreiben, so wie alle anderen Ausnahmen arbeiten.
Lösung Ich habe jetzt: Alle Tätigkeiten in meiner app haben diese onCreate:
public void onCreate(...){
Utils.RESOURCES = getResources();
...
}
Very dirty Code ... ich die Lösung nicht mögen. Meine Frage ist dann: Gibt es eine Möglichkeit, auf die Ressourcen ohne den Kontext zuzugreifen? Und am wichtigsten, Wie würde eine Anwendung wie meine dieses Problem lösen?