GoogleMap类对象抛出Nullpointer异常

时间:2013-02-04 07:17:20

标签: android google-maps

朋友们,我在 addMarker()

上收到NullPointer错误

以下是我的示例代码。

GoogleMap myMap;
android.support.v4.app.FragmentManager myFragmentManager = getSupportFragmentManager();
SupportMapFragment myMapFragment = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);
myMap = myMapFragment.getMap();
myMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
myMap.setMyLocationEnabled(true);
myMap.getUiSettings().setZoomControlsEnabled(true);
myMap.getUiSettings().setCompassEnabled(true);
myMap.getUiSettings().setMyLocationButtonEnabled(true);

错误消息,如行

处的NullPointer
myMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));

main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".DemoMapActiviy" >

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

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

任何想法我该如何解决?

1 个答案:

答案 0 :(得分:0)

我回过头来看过这个问题。首先检查片段管理器是否找到了您的片段。

如果没有尝试替换您将片段放入视图的方式。如果你想要一个另一种方式的例子,我发布了一个地图示例here

更多问题随时可以发表评论,我会与您共同完成:)

修改

你有没有正确的API密钥?如果您无法联系Google的服务器,那么很有可能这就是您的问题。否则可能是一个明显的问题,请确保您具有READ_GSERVICES和INTERNET权限。

请参阅Google Maps API V2 'Failed to Load Map. Could not contact Google Servers'

修改2

好的,所以我之前很懒,只是把你推荐给我的项目。如果您在项目中获得了与地图的连接,请从那里开始。

我在原始回复中建议的是检查myMapFragment是否为空。如果它很棒,尝试按照以下方式做一些事情:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
SupportMapFragment myMapFragment = new SupportMapFragment();
ft.replace(R.id.map, myMapFragment, Constant.TAXI_FRAGMENT_ID);
ft.commit();

R.id.map是空的FrameLayout

如果myMapFragment不为null,请尝试扩展SupportMapFragment并运行以下测试:

public class MyMapFragment extends SupportMapFragment {
    @Override
    public void onActivityCreated()
    {
        if (getMap() == null) Log.e("TAG", "There's something very wrong here";
    }
}

此外,如果您这样做,请确保您正在虚增MyMapFragment而不是SupportMapFragment的实例