1

朋友们,我在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"));

主要的.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>

知道如何解决吗?

4

1 回答 1

0

我不久前经历了这个问题。首先检查片段管理器是否找到了您的片段。

如果不尝试替换您将片段放入视图的方式。如果您想要其他方式的示例,我在此处发布了地图示例

如有更多问题,请随时发表评论,我将与您一起解决:)

编辑

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

请参阅Google Maps API V2 '加载地图失败。无法联系 Google 服务器

编辑 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不为空,则尝试扩展SupportMapFragment并运行以下测试:

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

此外,如果你这样做,请确保你正在膨胀一个MyMapFragmentnot ofSupportMapFragment

于 2013-02-04T09:02:38.417 回答