全局访问databasehelper对象

时间:2011-03-09 16:03:45

标签: android

每当我需要创建SQLiteOpenHelper'databasehelper'对象时,我需要在函数调用中传递上下文。

dbUtils.setEntityValues(this, moduleId, sendTo)

'this'参数指的是活动上下文。每次new databasehelper对象创建并执行db任务时。

DataBaseHelper dbHelper = new DataBaseHelper(context);


    try {
        dbHelper.openDataBase();

        SQLiteDatabase db = dbHelper.getReadableDatabase();

从未扩展Activity或Application的类文件中,我无法创建databasehelper对象。有没有办法全局获取databasehelper对象?或者以任何方式在非活动的类中获取应用程序上下文??

我是一个Android初学者,请提出一些提示..

提前致谢, 乔

2 个答案:

答案 0 :(得分:0)

乔,

您可以使用getApplicationContext()getBaseContext()从不扩展上下文的类访问应用程序上下文。

您可能还想稍微阅读这个问题What's the difference between the various methods to get a Context?

祝你好运!

答案 1 :(得分:0)

谢谢willytate,我解决了。我这样做的方式是......

class myActivity extends Activity { 
public static Activity me = null; 
... 
protected void onCreate(Bundle icicle) { 
     ... 
    me = this; 
    ... 
    }; 
}; 
class myClass { 
void myMthd() { 
    ... 
    Intent  myIntnt = myActivity.me.getIntent(); 
    ... 
    }; 
}; 

现在我可以创建'databasehelper'对象而不传递如下的上下文..

public DataBaseHelper() {

    super(myActivity.me.getApplicationContext(), DB_NAME, null, 1);     

    this.myContext = myActivity.me.getApplicationContext();
}

再次感谢,