来自非活动类的Android上下文

时间:2012-04-12 20:40:49

标签: android sqlite android-activity android-context

在我的SQLite安装程序类中,我有一个DbHelper,它需要一个Context作为它的一部分。要设置上下文,我只在我的SQLite类中使用一个构造函数,它需要一个上下文作为参数的一部分。

但我刚遇到一个问题。当我试图从一个不是Activity的类中调用我的SQLite类时,我不能使用context classname.this,这会让我烦恼。

我也尝试这样做来声明一个上下文:

protected Context context;

然后稍后称之为:

SetSql PlayerObject = new SetSql(This.context);

但这也不起作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:6)

像这样传递应用程序上下文

SetSql PlayerObject = new SetSql(this.getApplicationContext());

现在它应该可以正常工作。

答案 1 :(得分:-1)

public class DBHelper extends SQLiteOpenHelper {

private static final String TAG = "DBHelper";
private static final int DB_VERSION = 1;

private Context context;
private String DB_PATH;
private String DB_NAME;
private String TABLE_NAME;
private boolean booCreate;
private String createString;
private SQLiteDatabase myDataBase;

public DBHelper(Context context, String db_name, String table_name,
        boolean booCreate, String createString) {
    super(context, db_name, null, DB_VERSION);
    this.context = context;
    this.DB_NAME = db_name;
    this.DB_PATH = "/data/data/" + FindPackageName() + "/databases/";
    Log.d(TAG, "DBPATH=" + DB_PATH);
    this.TABLE_NAME = table_name;
    this.createString = createString;
    this.booCreate = booCreate;
    Log.d(TAG,"booCreate=" + String.valueOf(this.booCreate));
    try {
        createDataBase();
    } catch (IOException e) {
        throw new Error("Unable to Create Database");
    }
}

并在您的活动中

dbHelper = new DBHelper(this, this.getString(R.string.db_name_contact),
            this.getString(R.string.table_name_contacts), true, createString);

观看此视频并从此tutorial

的第III部分下载代码