我是iOS人试图转移到Android,我需要有人来解释/帮助我在这种情况下该怎么做。我有一个带tabhost片段的应用程序(3个标签)。此刻,我只加载3个不同的简单片段,它工作正常。
现在,我想在第一个选项卡上实现MapActivity。不幸的是,我无法将其扩展到MapActivity。它目前扩展到Fragment。
我在互联网上搜索,但可以找到完美的解决方案。
这个link是解决方案之一,但它使用了不推荐使用的LocalActivityManager。
我的问题是我可以将2个片段和一个单独的活动加载到片段tabhost中。如果有可能,请告诉我如何实现它?
注意:我在此tutorial上构建了我的app tabhost片段。
百万感谢我。答案 0 :(得分:1)
我认为一个解决方案是使用支持库的这个修改版本FragmentActivity扩展MapActivity而不是Activity:
https://github.com/petedoyle/android-support-v4-googlemaps
请记住,您需要在Activity类中创建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