2013-03-20 58 views
0

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

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

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

+0

MainActivity很可能是一个活动。 MyListFragment很可能是一个(列表)片段。 – 2013-03-20 15:31:41

回答

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。

+0

是的,它的工作原理。谢谢 – Bryanyan 2013-03-21 13:06:05

0

片段的onCreateView()你需要像下面调用内部:

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

欢呼,快乐的编码。