SupportMapFragment返回null

时间:2015-10-12 21:04:41

标签: android google-maps android-fragments google-maps-api-3

我已阅读已经相关的问题,但我无法找到问题的答案。

应用结构

我们的MainActivityFragmentTabHost,因此它包含片段。我想展示的其中一个片段里面有另一个片段 - SupportMapFragment

我们有第二项活动LoginActivity

问题

在浏览片段时,回到我的MyMapFragment没有问题。但是,当我打开LoginActivity并关闭它时,我得到一个空指针异常。 NPE就在这条线上

googleMap = fragment.getMap();

,实际上为null的是fragment

我不明白的是,它怎么能找到它的第一个"它加载的时间,但第二次找不到它?

我知道getMap()已被删除,但事实并非如此。我无法获得fragment对象。

我尝试使用getMapAsync(),但它也无法正常工作。我第一次接到onMapReady()的电话,但如果您切换回LoginActivity,则永远不会返回onMapReady()回调。

我的问题是:我如何"重置" SupportMapFragment是为了在我拨打findFragmentById时获取它?

这是MyMapFragment

的概述
public class MyMapFragment extends Fragment
{
    GoogleMap googleMap;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        if (_view != null)
        {
            ViewGroup parent = (ViewGroup) _view.getParent();

            if (parent != null)
            {
                parent.removeView(_view);
            }
        }       
        else
        {
            try
            {
                _view = inflater.inflate(R.layout.mymapfragment, container, false);
            }
            catch (InflateException e)
            {
                e.printStackTrace();
            }
        }

        SupportMapFragment fragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map_fragment);

        googleMap = fragment.getMap(); // fragment is null after going to another activity
    }
}

map_fragment.xml

<FrameLayout
    android:id="@+id/main"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment
        android:id="@+id/map_fragment"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!-- some other stuff -->
</FrameLayout>

0 个答案:

没有答案