在片段中使用谷歌地图支持片段

时间:2016-10-20 17:08:56

标签: java android google-maps android-fragments

我目前正在使用我的主要活动作为NavigationDrawer进行应用程序。因此,要浏览我的应用程序,任何其他“活动”都是一个片段,在一个片段中,我需要放置一个GoogleMap支持片段。关键是,在我的片段中,当我getFragmentManager.findFragmentById(R.id.map);时,它返回null。

以下是我的代码。

//fragment_home.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <fragment
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>
//My HomeFragment
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_home, container, false);

    FragmentManager manager = getFragmentManager();

    SupportMapFragment mapFragment = (SupportMapFragment)manager.findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);

    return view;
}

有人知道如何解决这个问题吗?我已经在这个网站和其他许多网站上寻找解决方案,但我无法想象如何将片段存储在我的“父”片段的xml布局中。

感谢您的帮助, 亲切, Matthieu Meunier

1 个答案:

答案 0 :(得分:2)

如果您要在SupportMapFragment内使用Fragment,则无法使用getFragmentManager方法。而是使用以下方法。

SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);