从Listfragment类访问数据库

时间:2013-03-20 15:30:56

标签: android

我在程序中制作了三个Java文件。它们是MainActivity.java,TrackerDBAdaptor.java和MyListFragment.java。要访问数据库,我有

private TrackerDBAdapter dbHelper;      
dbHelper = new TrackerDBAdapter(this);

当我将上面的行放在MainActivity.java中时,没问题。但我的意图是我想从我的MyListFragment.java类访问数据库。所以我将这两行放在MyListFragment.java的onCreateView()中。然后“这个”里面    dbHelper = new TrackerDBAdapter(this); 有问题。我理解的是这意味着类调用的实例,为什么MainActivity.java和MyListFragment.java之间存在差异。感谢。

2 个答案:

答案 0 :(得分:3)

您的类MainActivity.java可能扩展了Activity类,而Activity又是Context的后代。 TrackerDBAdapter.java可能在构造函数中使用了Context,这就是为什么在MainActivity中传递“this”的原因。 MyListFragment可能会扩展Fragment,它不是Context的后代,因此传递“this”将不起作用。在片段中获取Context对象的一种方法是调用getActivity(),它返回片段附加到的Activity对象。换句话说,在MyListFragment中执行以下操作可能会有效。

dbHelper = new TrackerDBAdapter(getActivity())
但是,请注意。如果片段未附加到活动,则getActivity()可能返回null。

答案 1 :(得分:0)

在Fragment的onCreateView()内,你需要调用如下:

private TrackerDBAdapter dbHelper;      
dbHelper = new TrackerDBAdapter(getActivity().getApplicationContext());

干杯,快乐的编码。