java - 如何从非 Activity 类实例化 Activity 类的对象?

标签 java android sqlite android-sqlite

我正在创建一个不扩展 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/

相关文章:

java - 局部变量赋值以避免多次转换

android - 在 twilio 中获取 channel 名称时出错。我在这里实现一对一聊天

android - 如何将源集添加到android项目

android - 未使用 RecyclerView.Adapter 内的 onActivityResult

c# - 在Windows Store应用中使用sqlite进行多线程

java - SQLite在某个ID之前插入?

java - String.replaceAll() 不适用于某些字符串

java - 如何使用java中的正则表达式从字符串中获取日期?

java - Java 中的类是如何实例化的?

android - 为什么我收到表名称的列不存在错误