我有一个虚拟数据管理器,它将使用 SQLite 数据库的内容填充 ArrayList。当我尝试创建数据库对象时,我收到一条错误消息,指出无法从静态上下文中引用“com.example.listview.manager.ActivityDummyDataManager.this”。package com.example.listview.manager;import android.database.Cursor;import com.example.listview.DBManager;import com.example.listview.model.ActivityItem;import java.util.ArrayList;public class ActivityDummyDataManager { public static ArrayList<ActivityItem> getActivityItemList() { DBManager db = new DBManager(this); Cursor cursor = db.fetch(); ArrayList<com.example.listview.model.ActivityItem> list = new ArrayList<>(); while (cursor.moveToNext()) { int index; index = cursor.getColumnIndexOrThrow("id"); Long id = cursor.getLong(index); index = cursor.getColumnIndexOrThrow("activity"); String activity = cursor.getString(index); index = cursor.getColumnIndexOrThrow("description"); String description = cursor.getString(index); index = cursor.getColumnIndexOrThrow("description"); String date = cursor.getString(index); ActivityItem item = new ActivityItem(); item.setId(id); item.setActivity(activity); item.setDescription(description); item.setDate(date); list.add(item); } return list; }}我有一个 DBManager 类,我通常会使用 DBManager db = new DBManager(this) 访问,但由于某种原因,这不适用于此类。package com.example.listview;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import android.util.Log;
1 回答

达令说
TA贡献1821条经验 获得超6个赞
您的构造函数 DBManager(Context c)需要一个上下文作为参数,如果您从 Activity 或 Service 类调用此构造函数,它将工作,因为 Activity 和 Service 都是 Context 的子类,因此传递this就足够了。由于ActivityDummyDataManager不处理上下文,您需要从活动传递 Context 或者您可以传递应用程序上下文getApplicationContext()。
改变你的方法如下
public static ArrayList<ActivityItem> getActivityItemList() {
DBManager db = new DBManager(mContext);
//rest of your code.
}
并在调用它时使用合适的活动或应用程序上下文。
添加回答
举报
0/150
提交
取消