引言
对于我的应用,我需要管理方向,因为我正在使用片段。在纵向模式下,我在一个新的Activity中启动GoogleMapsFragment。但在横向模式下,我会在主要活动的右侧启动GoogleMapsFragment。
不得不说,在protrait模式下,一切都很好。我将GoogleMapsFragment和Maps称为新活动。
问题
但是在横向模式下,当我启动GoogleMapsFragment时,会抛出一个NullPointerException并退出应用程序。
这是GoogleMapsFragment的代码片段:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View mainView = inflater.inflate(R.layout.google_maps, container, false);
mMapView = (MapView) mainView.findViewById(R.id.map_view);
mMapView.onCreate(savedInstanceState);
mMap = mMapView.getMap();
mMap.getUiSettings().setMyLocationButtonEnabled(false);
mMap.setMyLocationEnabled(true);
//...
我得到null的地方就是当我mMap = mMapView.getMap()
时,它似乎没有向mMap返回任何值,因此在下一步中,当mMap为null时,它会抛出异常。 / p>
这是布局“google_maps.xml”:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.gms.maps.MapView
android:id="@+id/map_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
我不知道为什么在纵向模式下工作但在横向模式下没有。还必须说肖像模式已经在真实设备上进行了测试,并且在模拟器中进行了横向模式测试,这可能是原因...
如果这是原因,我该怎么测试呢?
更新 -
在模拟器上使用Google API 4.4.2,这会延续NullPointerException问题,但这也是LogCat所显示的内容:
Google Play services out of date. Requires 4132500 but found 4033530
答案 0 :(得分:0)
我认为你过早地调用它(在这里查看:https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/MapFragment#getMap%28%29,onCreateView尚未完成)你也可能想要检查它是否为空。
仿真器也是原因,如果那里没有包含服务的话。 (How to download Google Play Services in an Android emulator?)