我有一个DBHandler类,该类将在几个活动中用于执行某些操作。创建了一个MyApp类(扩展了Application)来保存DBHandler的一个实例。

我的DBHandler类需要一个上下文来创建SQLiteOpenHelper来填充数据库,等等。

问题就从这里开始:在MyApp构造函数中,我想实例化我的DBHandler,所以我这样写:

public MyApp() {
    super();
    dbh = DBHandler(<WHAT DO I PASS HERE>);
}


我尝试了getApplicationContext(),getBaseContext(),“ this”……这时似乎还没有一个完全实例化的上下文。当SQLiteOpenHelper尝试ctx.getResources()时,我得到了NPE。

解决方法:创建DBHandler并将其设置在主类的onCreate中。 ->丑陋(叫我一个美学家)

问题:Android创建MyApp时有办法吗?

谢谢!

最佳答案

在MyApp.onCreate()中创建DBHandler是执行所需操作的正确方法。

@Override
public void onCreate() {
    super.onCreate();
    dbh = new DBHandler(this);
}

关于android - Android:扩展android.app.Application,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3191361/

10-10 18:35