Java 如何在ListFragment上实例化SQLiteOpenHelper类?
嗨,我有一个扩展SQLiteOpenHelper的类,名为“KnowledgeBaseHelper”。 我已经在扩展活动的类中使用它一段时间了,但后来我决定从使用ListActivity转换到ListFragment,问题是,当我尝试实例化名为KnowledgeBaseHelper的类时,如“KnowledgeBaseHelper=new KnowledgeBaseHelper(ListActivity.this);”它给我一个错误“构造函数KnowledgeBaseHelper(ListActivity)未定义” 这通常在我扩展ListActivity时起作用,但现在我遇到了这个错误。实例化与ListActivity和FragmentActivity不同吗 谢谢 下面是我的代码Java 如何在ListFragment上实例化SQLiteOpenHelper类?,java,android,android-listview,android-fragments,Java,Android,Android Listview,Android Fragments,嗨,我有一个扩展SQLiteOpenHelper的类,名为“KnowledgeBaseHelper”。 我已经在扩展活动的类中使用它一段时间了,但后来我决定从使用ListActivity转换到ListFragment,问题是,当我尝试实例化名为KnowledgeBaseHelper的类时,如“KnowledgeBaseHelper=new KnowledgeBaseHelper(ListActivity.this);”它给我一个错误“构造函数KnowledgeBaseHelper(ListAct
public class ListActivity extends ListFragment {
ArrayList<String> symptomList;
String name;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragment_generalsymptoms, container,
false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
new LoadSymptoms().execute();
}
class LoadSymptoms extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
KnowledgeBaseHelper helper = new KnowledgeBaseHelper(
ListActivity.this);
return null;
}
}
是否有其他方法实例化在片段中扩展SQLiteOpenHelper的类?需要传递给
KnowledgeBaseHelper
构造函数的参数是上下文
活动
是一种上下文
,因此您可以在活动中使用此
片段
不是上下文
,因此不能在片段中使用此
您可以在片段中使用getActivity()
来获取托管活动的引用(即-aContext
)。谢谢@laalto!工作得很好。很抱歉,我没有足够的代表投票支持您的答案。开始了。我需要等待几分钟来打勾。现在它开始了。非常感谢!
public class KnowledgeBaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "docdroid";
//... I deleted the following lines
public KnowledgeBaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
// Create Clinic Table
createTable(db, TABLE_CLINIC, CLINIC_COLUMN);
//... I deleted the following lines
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CLINIC);
onCreate(db);
//... I deleted the following lines
}
}