在扩展的SQLiteOpenHelper类中获取Context

时间:2014-04-20 14:00:59

标签: android android-studio android-sqlite sqliteopenhelper

我有数据库,我想用xml文件中的一些值填充它。 我正在使用此代码stream = context.getResources().openRawResource(R.xml.test_entry);来定义流,但context生成错误“无法解析符号'上下文'”。 我尝试将context替换为getActivity(), getContext(), this, class name,但仍然无效。我需要一些帮助...

public class DatabaseHelper extends SQLiteOpenHelper {

<...>

public DatabaseHelper(Context context) {
    super(context, dbName, null, dbv);
}


public void onCreate (SQLiteDatabase db) {
 <...>
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS "+tableName);
    onCreate(db);
    /////////////////
    loadTestValuyes(); <----- My function
    /////////////////
}


public  void loadTestValuyes() {

    test_addEntry stackOverflowXmlParser = new test_addEntry();
    List<Entry> entries = null;
    InputStream stream = null;

    ///// I need context here
    stream = context.getResources().openRawResource(R.xml.test_entry);
    /////////////////

    try {
        entries = stackOverflowXmlParser.parse(stream);
    } finally {
        if (stream != null) {
            stream.close();
        }
    }


    for (Entry entry : entries) {
         <...>
    }

}


}

由于

2 个答案:

答案 0 :(得分:1)

您正在传递Context作为构造函数参数。只需将其存储到成员变量:

private Context mContext;

public DatabaseHelper(Context context) {
    super(context, dbName, null, dbv);
    mContext = context;

然后使用mContext,您需要Context

答案 1 :(得分:0)

您可以将Context对象的引用保存为实例变量,并在需要的地方使用它:

public class DatabaseHelper extends SQLiteOpenHelper {

    private Context mContext;

    public DatabaseHelper(Context context) {
        super(context, dbName, null, dbv);
        mContext = context;
    }
}