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