如何在不扩展片段类的情况下使用getchildfragmentmanager?

时间:2015-04-24 05:02:41

标签: java android google-maps-android-api-2 supportmapfragment

我正在使用

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
}

它工作正常直到kitkat但在棒棒糖版本中它是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();
    }
}

1 个答案:

答案 0 :(得分:2)

根据getMap() documentation

  

不推荐使用此方法。请改用getMapAsync(OnMapReadyCallback)。回调方法为您提供了一个保证非空并准备好使用的GoogleMap实例。

getMap()无法保证返回非空映射,因为它需要一些时间来准备 - 使用OnMapReadyCallback并在回调中执行映射初始化步骤。