我想開發一個谷歌地圖V2,位置服務和一些控制按鈕的Android應用程序。NullPointer異常時,使用單獨的類而不是一個MainActivity
我不想把所有這些東西放在一個MainActivity類中,所以我想我可以把所有的代碼分成更多的類。 MainActivity應控制所有的GUI,並對地圖或位置事件作出反應。
現在我有以下問題。在我的onCreate我instanziate附加類:
// Preferences as singleton
pref = Prefs.getInstance(this.getApplicationContext());
pref.loadSettings();
// Set up the location
loc = new Locations(pref);
loc.setCallback(this);
map = new MyMap(pref);
它似乎工作正常。但是每次我啓動應用程序時,在MyMap類中都會拋出一個空指針異常。我不知道爲什麼以及如何預防它。當調用MyMap()時,將執行以下代碼:
[...]
private Prefs pref;
private GoogleMap mMap;
[...]
public MyMap(Prefs prefs) {
pref = (Prefs) prefs;
if (mMap == null) {
FragmentManager fmanager = getSupportFragmentManager();
mMap = ((SupportMapFragment) fmanager.findFragmentById(R.id.map)).getMap();
[...]
}
帶有findFragmentById的行是導致異常的行。我認爲這是由於片段管理器無法訪問我的MainActivity中加載的佈局而導致的。但是我怎樣才能訪問我的MainActivity中定義的片段和視圖元素?
每類有以下頭:
public class XYZ extends android.support.v4.app.FragmentActivity implements XXX, YYY
我想救我的首選項()類中的應用程序上下文。但我不知道如何在我的其他課程中使用它。 :(
有人能幫助我嗎?
非常感謝你!
托爾斯滕
發佈你的logcat。什麼行是拋出空指針? – Kaediil 2013-02-28 20:07:54
['NullPointerException'](http://developer.android.com/reference/java/lang/NullPointerException.html) – 2013-02-28 20:14:18
我將問題分解到findFragmentById()。如果我寫 'SupportMapFragment f =((SupportMapFragment)fmanager.findFragmentById(R.id.map)); ' f總是空。似乎findFragmentById沒有找到該片段。它可以工作,如果我把這個代碼放入我的MainActivity中。 – Ikarisan 2013-02-28 20:47:53