0

我是 iOS 人尝试迁移到 Android,我需要有人解释/帮助我在这种情况下应该怎么做。我有一个带有 tabhost 片段(3 个标签)的应用程序。此时,我只加载了 3 个不同的简单片段,它工作正常。

现在,我想在第一个选项卡上实现 MapActivity。不幸的是,我不能将它扩展到 MapActivity。它目前已扩展到 Fragment。

我在互联网上搜索,但可以找到解决它的完美解决方案。

链接是解决方案之一,但它使用已弃用的 LocalActivityManager。

我的问题是我可以只将 2 个片段和一个单独的地图活动加载到片段标签主机中吗?如果可能的话,你能告诉我如何实现吗?

注意:我基于本教程构建了我的应用程序标签主机片段。

百万感谢我。

4

1 回答 1

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;
    }

}

MyMapActivityTabsFragmentActivity您链接的教程中。记得使用修改版的支持库(下载链接

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

于 2012-08-01T13:55:18.843 回答