Java 如何在ListFragment上实例化SQLiteOpenHelper类?

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

嗨,我有一个扩展SQLiteOpenHelper的类,名为“KnowledgeBaseHelper”。 我已经在扩展活动的类中使用它一段时间了,但后来我决定从使用ListActivity转换到ListFragment,问题是,当我尝试实例化名为KnowledgeBaseHelper的类时,如“KnowledgeBaseHelper=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的类?

需要传递给
KnowledgeBaseHelper
构造函数的参数是
上下文

活动
是一种
上下文
,因此您可以在活动中使用

片段
不是
上下文
,因此不能在片段中使用


您可以在片段中使用
getActivity()
来获取托管活动的引用(即-a
Context
)。

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