我有一个使用自定义异常的应用程序,例如:
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)将“上下文”传递给构造函数,然后执行 ctx.getString(R.string.error_201) --> 失败,因为有时会从模型类中抛出此异常,因此它们没有上下文
2) 在 getMessage() 函数中检索消息时传递“上下文”,--> 失败,必须重写 super 方法,才能像所有其他异常一样工作。
我现在拥有的解决方案:我的应用程序中的所有活动都有这个 onCreate:
public void onCreate(...){
Utils.RESOURCES = getResources();
...
}
非常脏的代码......我不喜欢这个解决方案。那么我的问题是:有没有办法在没有上下文的情况下访问资源?最重要的是,像我这样的应用程序将如何解决这个问题?