MapsFragment上的空映射

时间:2014-02-13 09:59:50

标签: java android android-fragments maps

引言

对于我的应用,我需要管理方向,因为我正在使用片段。在纵向模式下,我在一个新的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

1 个答案:

答案 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?