开发者

Android: extending android.app.Application

开发者 https://www.devze.com 2023-01-06 10:45 出处:网络
I have a DBHandler class that will be used in several activi开发者_如何学运维ties to do some crud operations.created a MyApp class (extends Application) to hold one instantiation of the DBHandler.

I have a DBHandler class that will be used in several activi开发者_如何学运维ties to do some crud operations. created a MyApp class (extends Application) to hold one instantiation of the DBHandler.

My DBHandler class needs a Context to create the SQLiteOpenHelper to populate the db, etc.

That's where the problem starts: in my MyApp constructor, I want to instantiate my DBHandler, so I wrote this:

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

I tried getApplicationContext(), getBaseContext(), 'this'... nothing seems to be a fully-instantiated context at this point. I get a NPE when the SQLiteOpenHelper tries ctx.getResources().

A workaround: create the DBHandler and set it in the onCreate of my main class. -> UGLY (call me a aesthetician)

Question: is there a way to do it when Android creates MyApp?

Thanks!


Creating your DBHandler in MyApp.onCreate() is the proper way to do what you want.

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

精彩评论

暂无评论...
验证码 换一张
取 消