2
我有一个DBHandler类将用于几个活动来做一些crud操作。创建了一个MyApp类(扩展应用程序)来保存DBHandler的一个实例。Android:扩展android.app.Application
我DBHandler类需要上下文来创建SQLiteOpenHelper来填充数据库等
这就是问题开始的地方:在我的MyApp的构造,我要实例我DBHandler,所以我写了这个:
public MyApp() {
super();
dbh = DBHandler(<WHAT DO I PASS HERE>);
}
我试过getApplicationContext(),getBaseContext(),'this'...在这一点上没有任何东西似乎是完全实例化的上下文。当SQLiteOpenHelper尝试ctx.getResources()时,我得到一个NPE。
解决方法:创建DBHandler并将其设置在我的主类的onCreate中。 - > UGLY(称我为美学家)
问题:Android创建MyApp时有办法吗?
谢谢!
感谢您的确认。 但有一个问题:我如何在那里引用资源(或上下文)? 当我检查MyApp.onCreate()中的上下文时,它有一个NULL mBase var。当我到达我的MainActivity时,该对象不再为空。所以在我看来,Android正在调用onCreate来完成上下文的“完成创建”,因此在onCreate中我没有“完全成长的上下文”。 有意义吗?我不确定我的假设是否属实,但是当我尝试使用我的DBHandler时,它肯定会失败,因为mBase为空。 鸡蛋和鸡肉的问题,在这里? 谢谢! – llappall 2010-07-07 02:46:21
MyApp * IS *在MyApp.onCreate内部,因此无论何时您需要上下文,都可以通过** this **。 – 2010-07-07 03:04:14
另外,请确保MyApp.onCreate()中的第一行是super.onCreate(); – 2010-07-07 03:07:09