7

我目前正在为 Android 4.3 开发。
背景:
我正在使用 pageViewer 在三个不同的片段之间滚动。我的第二个片段(选项卡 2)包含带有 SupportMapFragment 和其他内容的 XML。如下所示:
我的问题 http://imageupload.co.uk/files/vrhg1e06x977rkm1vhmd.jpg
我的尝试:
在搜索网络时,我注意到 SupportMapFragment 我需要 FragmentActivity,它不适用于 FragmentPagerAdapter。我需要用户能够控制地图以及控制片段中的其余内容。
我的问题:
如何在片段中有更多内容的同时将 SupportMapFragment 与 viewPager 一起使用?

有关我的代码的更多信息: 在 FragmentPagerAdapter 内部的 getItem 中,我正在返回单例片段(每个片段都有一个类),因此我在 Internet 上找不到任何解决方案,因为我的类无法扩展 SupportMapFragment,因为它有更多数据。

4

1 回答 1

21

从 Android 4.2 开始(也在 pre-Jelly 的支持库中),您可以使用嵌套片段

你可以看到如何创建这样的片段是:

public class MyFragment extends Fragment {

    private SupportMapFragment fragment;
    private GoogleMap map;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.layout_with_map, container, false);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        FragmentManager fm = getChildFragmentManager();
        fragment = (SupportMapFragment) fm.findFragmentById(R.id.map_container);
        if (fragment == null) {
            fragment = SupportMapFragment.newInstance();
            fm.beginTransaction().replace(R.id.map_container, fragment).commit();
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        if (map == null) {
            map = fragment.getMap();
            map.addMarker(new MarkerOptions().position(new LatLng(0, 0)));
        }
    }
}

以上代码从此处复制。

重要说明:您的自定义Fragments布局不能包含<fragment>标签。

于 2013-08-22T08:48:16.760 回答