0

我搜索过计算器,看着比如这么多的解决方案, here如何正确地在Fragment中实现谷歌地图?

here

我已经看过以上,但在性能方面没有一个强大的。 这是我走到这一步,

这一个工作,但只有当分片的第一创建,但然后返回到地图片段后,它给了我布局通胀例外

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) 
{ 
    view=inflater.inflate(R.layout.fragment_public_maps,null,false); 
    googleMap= (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.pub_map); 
    googleMap.getMapAsync(this); 
    return view; 
} 

我也试过这一个曾经和它的作品,但它使我的应用程序缓慢,有时崩溃

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) 
{ 
    try 
    { 
     view=inflater.inflate(R.layout.fragment_public_maps,null,false); 

    } 
    catch (InflateException e) 
    { 
     googleMap= (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.pub_map); 
     googleMap.getMapAsync(this); 
     return view; 
    } 
    googleMap= (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.pub_map); 
    googleMap.getMapAsync(this); 
    return view; 

} 

我不知道该怎么办否则,如果任何人都可以点我到正确的方向,我真的很感激。

回答

1

我做的方式,它的伟大工程,是将一个FrameLayout里的片段中的XML文件中像这样:

<FrameLayout 
    android:id="@+id/map_id" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

然后在您的片段onActivityCreated方法你做到这一点:

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    mMapFragment = MapFragment.newInstance(); 
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) { 
     getChildFragmentManager().beginTransaction().replace(R.id.map_id, mMapFragment).commit(); 
    } else { 
     getFragmentManager().beginTransaction().replace(R.id.map_id, mMapFragment).commit(); 
    } 
    mMapFragment.getMapAsync(this); 
} 

如果你使用支持片段,

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    mMapFragment = SupportMapFragment.newInstance(); 
    getSupportFragmentManager().beginTransaction().replace(R.id.sod_map_lite, mMapFragment).commit(); 
} 
+0

所以我不需要我的片段布局中的地图片段只有框架布局 – yanozai

+0

@ yanozai是的,这是正确的。 – eclipse1203

+0

我使用支持fragmnet经理这不工作的人 – yanozai