gpt4 book ai didi

java - 如何在 ListFragment 上实例化 SQLiteOpenHelper 类?

转载 作者:行者123 更新时间:2023-11-30 09:11:25 26 4
gpt4 key购买 nike

您好,我有一个名为“KnowledgeBaseHelper”的扩展 SQLiteOpenHelper 的类。我已经在扩展 Activity 的类中使用它一段时间了,但后来我决定从使用 ListActivity 转移到 ListFragment,问题是,当我尝试实例化名为 KnowledgeBaseHelper 的类时,就像这样“KnowledgeBaseHelper helper = new KnowledgeBaseHelper( ListActivity.this);"它给我一个错误“构造函数 KnowledgeBaseHelper(ListActivity) 未定义”

这通常在我扩展 ListActivity 时有效,但现在我遇到了这个错误。实例化是否与 ListActivity 和 FragmentActivity 不同?

谢谢

下面是我的代码

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,我有很长的代码和方法,所以我决定只包含一些。

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
}
}

有没有其他方法可以实例化在 Fragments 中扩展 SQLiteOpenHelper 的类?

最佳答案

您需要传递给 KnowledgeBaseHelper 构造函数的参数是一个 Context

Activity 是一个 Context,因此您可以在 Activity 中使用 this

fragment 不是上下文,因此您不能在 fragment 中使用this

您可以在 fragment 中使用 getActivity() 来获取对托管 Activity 的引用(即 -a Context)。

关于java - 如何在 ListFragment 上实例化 SQLiteOpenHelper 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22096307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com