getMap()有时会在某些设备上返回Null

时间:2015-02-03 20:52:42

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

我在某些设备上获得NullPointerException

java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.GoogleMap com.google.android.gms.maps.MapFragment.getMap()' on a null object reference
    at nick.Fragment_Maps_Main.onActivityCreated(Fragment_Maps_Main.java:376)

我在Stack Overflow上看到的是大多数人在onActivityCreated()以及之后的任何地方使用它。这就是我在下面的代码中所做的。

它正在处理100个设备中的90个。 在10台设备上它永远不会工作。 这10个设备在API 11上都是不同的Android版本。

这是我的代码。

public class MapClass extends Fragment {
    private static ViewGroup mapsView;
    private static final String TAG = "MapsFragment";
    private MapFragment MAPFRAG;
    private GoogleMap GMAP;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.d(TAG, "onCreateView");
        setRetainInstance(true);
        mapsView = (ViewGroup) inflater.inflate(R.layout.fragment_maps, container, false);
        return mapsView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        MAPFRAG = (MapFragment) getFragmentManager().findFragmentById(R.id.mapviewmain);
        GMAP = MAPFRAG.getMap(); // --------------->THIS IS LINE 376
    }
}

这是我的XML。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/RL_MAPS_OVERALLSCREEN"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusableInTouchMode="true" >

    <fragment
        android:id="@+id/mapviewmain"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="gov.in.dnr.Fragment_Maps_TouchSupport" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

This is the answer:

  

注意:当布局包含片段时,您无法将布局扩展为片段。只有动态添加到片段时才支持嵌套片段。