次のようなカスタム例外を使用するアプリがあります。
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;
}
}
明らかに、エラー メッセージをローカライズしたいと考えています。考えられる解決策はありますが、どれも私を満足させません。
1) "Context" をコンストラクターに渡し、ctx.getString(R.string.error_201) を実行します --> 失敗します。この例外は MODEL クラスからスローされることがあるため、Context はありません。
2) getMessage() 関数でメッセージを取得するときに「コンテキスト」を渡します。 --> 失敗します。他のすべての例外として機能するには、スーパー メソッドをオーバーライドする必要があります。
私が今持っている解決策: 私のアプリのすべてのアクティビティには、この onCreate があります:
public void onCreate(...){
Utils.RESOURCES = getResources();
...
}
非常に汚いコード...私は解決策が好きではありません。私の質問は、コンテキストなしでリソースにアクセスする方法はありますか? そして最も重要なことは、私のようなアプリケーションはこの問題をどのように解決するでしょうか?