2012-07-31 59 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