朋友们,我在 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);
错误消息,如行
处的NullPointermyMap.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>
任何想法我该如何解决?
答案 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
的实例