2016-05-17 44 views
0

我使用谷歌地圖爲Android的片段,但有問題時,更改其他片段與導航。 當我返回到具有標記的片段並且再次繪製應用程序時,再繪製所有的地圖和標記。 我怎樣才能控制這一切?請幫助谷歌地圖Android的片段加載最後的標記

這是片段的活性

switch (position){ 
       case 0: 
        getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,mapFragment).commit(); 
       break; 
       case 1: 
        getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,searchFragment).commit(); 
        break; 
       case 2: 
        getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,promoFragment).commit(); 
        break; 
       case 3: 
        getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer,settingFragment).commit(); 
        break; 
      } 

如何控制變化這是怎麼顯示地圖片段

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_map, container, false); 

    FragmentManager manager = getFragmentManager(); 
    FragmentTransaction transaction = manager.beginTransaction(); 
    map = new SupportMapFragment(); 
    transaction.add(R.id.map, map); 
    transaction.commit(); 
    map.getMapAsync(this); 

    return view; 
} 

public void onMapReady(GoogleMap googleMap) { 
    database = new Database(getContext()); 
    readItems(googleMap); //Show all markers 
} 

回答

1

可以覆蓋全生命週期的方法,如onResume

在這裏尋找更多的細節... https://newcircle.com/s/post/1250/android_fragments_tutorial

更具體地說 - onCreateView()僅在片段第一次創建時被調用。如果您覆蓋onResume(),則每次碎片重新聚焦時都可以更新值和標記。

@Override 
public void onResume(){ 
    super.onResume(); 

    <Your code here> 
} 
+0

但是,當片段我在片段上導航onCreateView被調用,或者我可能在代碼片段中爲invoque映射需要在另一個地方 –

+0

這是因爲你每次都在製作一個新片段。嘗試使用成員變量。 – RScottCarson

0

林不知道這是否是正確的事,但英里的解決辦法是先申報

,並在與開關控制我只隱藏片段和 顯示必要的片段