2012-07-31 124 views
0

我是iOS的人嘗試移動到Android,我需要有人解釋/幫助我該怎麼做,在這種情況下。我有一個tabhost片段的應用程序(3個選項卡)。在這一刻,我只是加載3個不同的簡單片段,它工作正常。MapActivity與TabHost片段

現在,我想要將MapActivity實現到第一個選項卡上。不幸的是,我無法將其擴展到MapActivity。它目前擴展到Fragment。

我在互聯網上搜索,但可以找到完美的解決方案。

這是link是解決方案之一,但它使用了不贊成使用的LocalActivityManager。

我的問題是我可以只加載2片段和一個單獨的活動地圖到片段tabhost。如果可能的話,你可以請我介紹一下如何實現它?

注:我建立了我的應用程序tabhost片段基於此tutorial

萬分感謝我。

+0

您好,我仍然需要幫助。請幫忙! – JHHoang 2012-08-01 13:47:32

回答

1

我認爲一個解決辦法是使用支持LIB的這款改裝版有FragmentActivity延伸,而不是活動MapActivity:

https://github.com/petedoyle/android-support-v4-googlemaps

記住,你需要創建活動類中的MapView對象,它傳遞給片段,以這種方式:

public class MyMapActivity extends FragmentActivity { 

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

     Exchanger.sMapView = new MapView(this, "your_api_key"); 

    } 

    public static class Exchanger { 
     public static MapView sMapView; 
    } 
} 

和片段將是

public class MapFragment extends Fragment { 

    @Override 
    public void onCreate(Bundle args) { 
     super.onCreate(args); 
     setRetainInstance(true); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup vg, Bundle data) { 

     final ViewGroup parent = (ViewGroup) MyMapActivity.Exchanger.sMapView.getParent(); 
     if (parent != null) 
      parent.removeView(MyMapActivity.Exchanger.sMapView); 

     return MyMapActivity.Exchanger.mMapView; 
    } 

} 

MyMapActivity是您鏈接的教程中的TabsFragmentActivity。 請記住使用支持庫的修改版本(download link

上述方法現在已被棄用。 您現在可以使用MapFragment: http://developer.android.com/google/play-services/maps.html

+0

謝謝我試圖現在實現它,我還有1個問題是我需要刪除舊的支持庫嗎? – JHHoang 2012-08-01 14:13:57

+0

是的,你需要刪除它。 – rciovati 2012-08-01 14:15:22

+0

你能解釋一下這一行: Exchanger.sMapView =新的MapView(this,getString(R.string.gmap_api_key)); – JHHoang 2012-08-01 14:18:21