2014-07-03 47 views
1

我創建了一個SupportMapFragment動態,因爲我有一些嵌套的片段,並與<fragment>崩潰我的應用程序(FragmentTabHost<fragment>,當您更改標籤時不會很好)。Android - 如何知道Google地圖是否準備好?

現在我想做一個simpel getMap()電話,但我總是得到null。我從onCreateonCreateView稱之爲......到目前爲止,我的研究,這是因爲還沒有產生碎片,因此可能做它onResume不是肯定的賭注,因爲相關的

getChildFragmentManager().beginTransaction().replace(R.id.map_frame, mMapFragment).commit(); 

是一個異步調用。

所以我的問題是:我怎麼知道我的地圖可以使用?有沒有可用於此的任何listeners?任何常見的做法?關於這方面的文檔我找不到很多。

+0

可能的重複[如何知道地圖可以在使用SupportMapFragment時使用?](http://stackoverflow.com/questions/14047257/how-do-i-know-the-map-is -ready對GET-時,使用最supportmapfragment二手) – shkschneider

回答

0

尋找到其他的答案後,我做了一個更簡單的選擇自己:

mMapFragment = new SupportMapFragment() { 
      @Override 
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
       View view = super.onCreateView(inflater, container, savedInstanceState); 
       setupMapIfNeeded(); 
       return view; 
      } 
     }; 

這樣,我延長SupportMapFragment匿名,我不需要創建一個新的類或接口或偵聽器。雖然如果您需要重用某些東西並且可以從更復雜的用例中受益,我建議您將它擴展到一個新類中,並設置一些listnets,但對於我的purpouse而言,這是非常必要的。

建議的意思:以這種方式使用它,你不能使用SupportMapFragmet的工廠方法newInstance(),所以你將不得不使用構造函數,這對我來說工作得很好,但一些建議不使用它。

0

也許你正試圖在片段完成創建之前獲取地圖對象。使用LocationClient可以幫助你,正如這位紳士所提到的 here

可以撥打locationClient.connect();建立連接。連接成功後,執行onConnected方法。如果失敗,則調用onConnectionFailed。

Google's example或此example應該幫助你。

相關問題