我有一個(gè)虛擬數(shù)據(jù)管理器,它將使用 SQLite 數(shù)據(jù)庫的內(nèi)容填充 ArrayList。當(dāng)我嘗試創(chuàng)建數(shù)據(jù)庫對象時(shí),我收到一條錯(cuò)誤消息,指出無法從靜態(tài)上下文中引用“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; }}我有一個(gè) 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 回答
達(dá)令說
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
您的構(gòu)造函數(shù) DBManager(Context c)需要一個(gè)上下文作為參數(shù),如果您從 Activity 或 Service 類調(diào)用此構(gòu)造函數(shù),它將工作,因?yàn)?Activity 和 Service 都是 Context 的子類,因此傳遞this就足夠了。由于ActivityDummyDataManager不處理上下文,您需要從活動(dòng)傳遞 Context 或者您可以傳遞應(yīng)用程序上下文getApplicationContext()。
改變你的方法如下
public static ArrayList<ActivityItem> getActivityItemList() {
DBManager db = new DBManager(mContext);
//rest of your code.
}
并在調(diào)用它時(shí)使用合適的活動(dòng)或應(yīng)用程序上下文。
添加回答
舉報(bào)
0/150
提交
取消
