2015-04-24 168 views
0

我使用如何在不擴展片段類的情況下使用getchildfragmentmanager?

class baseactivity extends Activity 
{ 
    //some stuffs is here, so i cannot Extend Fragment 
} 
class activity extends baseactivity 
{ 
    GoogleMap map=((MapFragment) getFragmanentManager().findFragmentById(R.id.map)).getMap(); 

    if(map!=null) 
     Log.e("map is not null","map was unable to initialize");//printing till kitkat version 
    else 
     Log.e("map is initialize","successfully initialize");//printing in lollipop 
} 

它的正常工作,直到奇巧,但它null在棒棒糖版本我知道我可以使用getchildfragmentmanager,但我不能擴展片段類引起我的項目已基本完成,所以我不能做出大的改動。 幫助我不擴展片段類。

更新後的代碼也沒有工作對我來說

class Baseactivity extends Activty 
{ 
    //some stuff 
} 
class parent extends Baseactivity implements OnMapLoadedCallback 
{ 
    GoogleMap map; 
    void oncreate(Bundle savedIntanceState) 
    { 
     MapFragment mapfragment; 
     mapfragment.setOnMapLoaderCallback(this); 
     //map.addmarker. 
    } 

    @Override 
    public void onMapLoaded() 
    { 
     map=((MapFragment)getMapFragment.findFragmentById(R.id.map)).getMap(); 
    } 
} 
+0

你在哪裏附加片段到活動?提交事務,然後像ianhanniballake說的那樣使用getMapAsync,那麼你將直接在回調中接收你的GoogleMap實例。 – ivagarz

+0

我無法將片段擴展到活動,因爲我擴展了BaseActivity,它是Activity的基類,BaseActivity有一些我必須在我的主Activity中使用的東西。 – Nitin

回答

2

getMap() documentation

這種方法已經過時了。改爲使用getMapAsync(OnMapReadyCallback)。該回調方法爲您提供了一個GoogleMap實例,該實例保證爲非null並且可以使用。

getMap()不能保證,因爲它需要一些時間來準備返回一個非空的地圖 - 使用OnMapReadyCallback,做你的地圖初始化步驟回調那裏。

+0

我得到NullpointerException在map.setOnMapLoadedCallback(this)。 – Nitin

+0

與我同樣的問題,任何解決方案? – Rahul

+0

@Nitin - 你的代碼有'map'作爲'GoogleMap',但'setOnMapLoadedCallback()'是'MapFragment'的一種方法。你可以發佈你正在嘗試運行的更新代碼嗎? – ianhanniballake

相關問題