我有一个DBHandler类,将在几个活动中用于执行一些crud操作。创建了一个MyApp类(扩展了Application)来保存DBHandler的一个实例。
我的DBHandler类需要一个Context来创建SQLiteOpenHelper来填充db等。
这就是问题出现的地方:在我的MyApp构造函数中,我想实例化我的DBHandler,所以我写了这个:
public MyApp() {
super();
dbh = DBHandler(<WHAT DO I PASS HERE>);
}
我尝试了getApplicationContext(),getBaseContext(),'this'......此时似乎没有任何完全实例化的上下文。当SQLiteOpenHelper尝试ctx.getResources()时,我得到一个NPE。
解决方法:创建DBHandler并将其设置在我的主类的onCreate中。 - &GT; UGLY(称我为美学家)
问题:当Android创建MyApp时,有没有办法实现?
谢谢!
答案 0 :(得分:1)
在MyApp.onCreate()中创建DBHandler是执行所需操作的正确方法。
@Override
public void onCreate() {
super.onCreate();
dbh = new DBHandler(this);
}