Android 从Listfragment类访问数据库

Android 从Listfragment类访问数据库,android,Android,我在程序中创建了三个Java文件。它们是MainActivity.java、trackerbadaptor.java和MyListFragment.java。要访问我拥有的数据库 private TrackerDBAdapter dbHelper; dbHelper = new TrackerDBAdapter(this); 当我将以上几行放在MainActivity.java中时,没有问题。但我的目的是希望从MyListFragment.java类访问数据库。因此,我将这两行放在

我在程序中创建了三个Java文件。它们是MainActivity.java、trackerbadaptor.java和MyListFragment.java。要访问我拥有的数据库

private TrackerDBAdapter dbHelper;      
dbHelper = new TrackerDBAdapter(this);
当我将以上几行放在MainActivity.java中时,没有问题。但我的目的是希望从MyListFragment.java类访问数据库。因此,我将这两行放在MyListFragment.java的onCreateView()中。然后“这个”在
dbHelper=newtrackerbadapter(此)

有问题。我所理解的是,这意味着类调用的实例,为什么MainActivity.java和MyListFragment.java之间存在差异。谢谢。

在片段的
onCreateView()
中,您需要像下面这样调用:

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

干杯,快乐编码。

在片段的
onCreateView()
中,您需要像下面这样调用:

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

干杯,快乐编码。

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

dbHelper = new TrackerDBAdapter(getActivity())

不过要小心。如果片段未附加到活动,则getActivity()可能返回null。

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

dbHelper = new TrackerDBAdapter(getActivity())

不过要小心。如果片段未附加到活动,则getActivity()可能返回null。

MainActivity很可能是一个活动。MyListFragment很可能是(列表)片段。MainActivity很可能是活动。MyListFragment很可能是(列表)片段。