我尝试初始化GoogleMap实例,但SupportMapFragment返回null。 这是我的MainActivity类:
public class MainActivity extends FragmentActivity
{
GoogleMap gMap;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
initMap(); //here is the NullPointerExeption
setContentView(R.layout.activity_map);
}
public boolean initMap()
{
if (gMap == null) {
SupportMapFragment mapFrag =
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.fragMap);
gMap = mapFrag.getMap();
}
return (gMap != null);
}
}
这是我的activity_map.xml:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/fragMap"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
有什么问题?如果我注释掉initMap()函数,它可以正常工作并显示地图。
答案 0 :(得分:3)
我认为你应该改变顺序
setContentView(R.layout.activity_map);
initMap();
首先,您应该setContentView(R.layout.activity_map);
,然后从SupportMapFragment
引用地图。