2013-03-20 65 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()); 

歡呼,快樂的編碼。