[英]How to externalize the string for an error message in a custom exception class in Android
我有這堂課
public class InternetConnectionException extends RuntimeException {
int code = 0;
public InternetConnectionException(){
super("Internet connection is down");
}
public InternetConnectionException(String message){
super(message);
}
}
此錯誤消息不應進行硬編碼。 應該將其外部化以提供不同的語言,因為拋出此異常時,消息將顯示在屏幕上。 現在,是否有一種方法可以將其外部化為strings.xml
資源,還是應該更改設計? (即,拋出此異常時,只需在活動中引用字符串資源並顯示已解析的值)
我認為,好的設計不應允許純Java類(例如異常)知道Android框架的內部,但我可能是錯的。
由於您不能直接訪問string.xml,但是我可以想到一種方法來實現您要完成的任務。
這是一些代碼來證明這個想法
AppApplication.java
public class AppApplication extends Application {
public static StringConstant STRING_CONSTANT;
@Override
public void onCreate() {
super.onCreate();
STRING_CONSTANT = new StringConstant(getBaseContext());
STRING_CONSTANT.build();
}
}
StringConstant.java
public class StringConstant {
private Context context;
public static String appName;
// declare other String variables
public StringConstant(Context context) {
this.context = context;
}
public void build(){
setAppName(context.getString(R.string.app_name));
// set other String variables
}
public static String getAppName() {
return appName;
}
public static void setAppName(String appName) {
StringConstant.appName = appName;
}
}
現在從另一個類訪問字符串
public class InternetConnectionException extends RuntimeException {
int code = 0;
public InternetConnectionException(){
super(AppAplication.STRING_CONSTANT.getAppName());
}
public InternetConnectionException(String message){
super(message);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.