我在某些设备上获得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>