我正在创建一个不扩展 Activity 的 java 类,并且在其构造函数中,我想从实例化 SQLiteOpenHelper
的另一个类实例化一个对象。问题是,在实例化 SQLiteOpenHelper 类的对象时,我需要传递不扩展 Activity 的当前类的 Context 。我应该将什么参数传递给 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();
}
}
最佳答案
您需要将当前上下文
传递给您的MPLDataBase
构造函数
public NotifyArrayAdapter(Context con) {
mplOpenHelperDB = new MPLDataBase(con);
}
就像你从任何Activity
调用它一样
NotifyArrayAdapter notifyarrayAdapter = new NotifyArrayAdapter(yourActivity.This);
就像你从任何 Fargment
调用它一样
NotifyArrayAdapter notifyarrayAdapter = new NotifyArrayAdapter(getActivity());
关于java - 如何从非 Activity 类实例化 Activity 类的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24303779/