【问题标题】:GoogleMap class object throw Nullpointer ExceptionGoogleMap 类对象抛出 Nullpointer 异常
【发布时间】:2013-02-04 19:55:25
【问题描述】:

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

ma​​in.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>

知道怎么解决吗?

【问题讨论】:

标签: android google-maps


【解决方案1】:

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

如果不尝试替换您将片段放入视图的方式。如果您想要其他方式的示例,我已经发布了地图示例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 不为空,则尝试扩展SupportMapFragment 并运行以下测试:

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

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

【讨论】:

  • 我检查了您的示例并使用我的应用程序对其进行了验证,现在问题是当我运行应用程序时出现错误消息,例如加载地图失败。无法联系 Google 服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多