我尝试了一切,这个 Using Application context everywhere? 几乎没有什么东西可行。
我需要在我的DatabaseException类中使用应用程序上下文来扩展Exception。
我需要它,因为我想在启动异常时检查一些sharedpreferences
。
代码基本上是这样的:
public class DatabaseException extends Exception {
private static final long serialVersionUID = 1L;
DatabaseException(){
super();
}
DatabaseException(String s){
super(s);
}
public DatabaseException (String s, Throwable t){
super (s,t);
kindOfException(t.getCause(), s);
}
DatabaseException (Throwable t){
super (t);
kindOfException(t.getCause(), null);
}
...
private void createLog() {
Log.d("Database Exception","On Create Log");
String listLogs;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(DatabaseException.class.context);
当然这不起作用。那么......拜托,有人可以帮帮我吗?
答案 0 :(得分:1)
public class DatabaseException extends Exception {
private static final long serialVersionUID = 1L;
public YourContext context;
public DatabaseException(YourContext context){
this.context = context;
}
}
现在,如果你发现异常:
try {
...
} (catch DatabaseException e) {
MyContext context = e.context;
}
答案 1 :(得分:0)
很简单......你做不到。但是当Execption
被提升时,您可以执行
private void createLog() {
this.getContext();
Log.d("Database Exception","On Create Log");
String listLogs;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(DatabaseException..
}
catch
子句中需要的操作。
你可以把它作为参数传递但是,请避免它。
答案 2 :(得分:0)
快速回答:
1.添加应用程序上下文作为DatabaseException构造器的参数。
2.将DatabaseException作为其他类的内部类。 (其他类意味着Activity ...),因此您可以在内部类中使用外部类的字段/方法
3. ...