【发布时间】:2014-06-19 09:56:45
【问题描述】:
我正在创建一个不扩展 Activity 的 java 类,并且在其构造函数中,我想从另一个实例化 SQLiteOpenHelper 的类实例化一个对象。问题是,当实例化SQLiteOpenHelperclass 的对象时,我需要传递当前类的Context,它不扩展Activity。我应该将什么参数传递给SQLiteOpenHelper 的实例。
SQLiteOpenHelper 的构造函数:
public class MPLDataBase extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME = "MPL.db";
private static final String MPL_TABLE_NAME = "MPLData";
public MPLDataBase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
实例化 SQLiteOpenHelper 的类:这是一个 NON_ACTIVITY 类
public class NotifyArrayAdapter {
private MPLDataBase mplOpenHelperDB = null;
private SQLiteDatabase sqliteDB = null;
private int itemClickedPos;
public NotifyArrayAdapter() {
mplOpenHelperDB = new MPLDataBase(WHAT_SHOULD_I_PASS_HERE);
}
NotifyArrayAdapterClass
public class NotifyArrayAdapter {
private MPLDataBase mplOpenHelperDB = null;
private SQLiteDatabase sqliteDB = null;
private int itemClickedPos;
public NotifyArrayAdapter(Context context) {
if (this.mplOpenHelperDB == null) {
this.mplOpenHelperDB = new MPLDataBase(context);
}
if (this.sqliteDB == null) {
this.sqliteDB = mplOpenHelperDB.getWritableDatabase();
}
}
public void deleteAtPos(int pos) {
if(! this.sqliteDB.isOpen()) {
this.sqliteDB = mplOpenHelperDB.getWritableDatabase();
}
this.itemClickedPos = pos;
int [] dbIDs = this.mplOpenHelperDB.getIDs();
mplOpenHelperDB.deleteRow(dbIDs[this.itemClickedPos]);
}
public void deleteAllDBRows() {
if(! this.sqliteDB.isOpen()) {
this.sqliteDB = mplOpenHelperDB.getWritableDatabase();
}
mplOpenHelperDB.deleteALLRows();
}
}
【问题讨论】:
-
你会在任何Activity中调用这个类吗?
-
你在哪里使用你的
NotifyArrayAdapter?Contexts 并非特定于类。你可以把它们传下去。就像您在初始化对话框、系统服务时所做的那样...... -
@SuperSuer 是的
NotifyArrayAdapter类我正在创建它,所以稍后我将从另一个扩展活动的类中实例化它 -
@MiroMarkarian 希望我对 super_suer 的回复能回答您的问题
-
你能把代码粘贴到你调用这个类的地方吗
标签: java android sqlite android-sqlite