我在访问地图片段时遇到问题。 getFragmentManager()。findFragmentById(R.id.map))返回null。 我不知道为什么。 有什么问题?
谢谢!
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tvNombreCentro"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="10dp"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="tag_fragment_map" />
</LinearLayout>
在setContentView之后的活动中我尝试访问地图,但是我收到了异常
public class Mapa extends Activity {
private GoogleMap mMap;
private ActionBar ab;
private TextView tvNombreCentro;
private TextView tvTelefonoValor;
private TextView tvEMailValor;
private TextView tvWebValor;
private TextView tvDireccionValor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapa_centro);
GoogleMap mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
}
答案 0 :(得分:21)
使用这种方式:
SupportMapFragment mapFrag = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
map = mapFrag.getMap();
答案 1 :(得分:2)
如果您的问题仍未解决,请尝试以下操作:
在使用SupportMapFragment
时,在检索地图时,请使用
GoogleMap mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
另外,更改
public class Mapa extends Activity {
到
public class Mapa extends FragmentActivity {
答案 2 :(得分:1)
更改布局
android:name = "com.google.android.gms.maps.SupportMapFragment"
通过
android:name = "com.google.android.gms.maps.MapFragment"
。
或者,您可以使用getSupportFragmentManager()
代替getFragmentManager()
。
答案 3 :(得分:1)
我在尝试获取MapFragment时遇到类似的问题,但由于设备未更新Google Play服务而获得null。