10

我在访问地图片段时遇到问题。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();
}
4

4 回答 4

21

使用这种方式:

SupportMapFragment mapFrag = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map);

            map = mapFrag.getMap();

这是带有示例的完整代码:

于 2013-06-10T13:05:31.120 回答
2

如果你的问题没有解决,试试这个:

当您使用SupportMapFragment时,在检索地图时,使用

   GoogleMap mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

还有,改变

   public class Mapa extends Activity {

   public class Mapa extends FragmentActivity {
于 2013-06-10T12:51:02.243 回答
1

布局变化

android:name = "com.google.android.gms.maps.SupportMapFragment"

经过

android:name = "com.google.android.gms.maps.MapFragment".

或者,您可以使用getSupportFragmentManager()而不是getFragmentManager().

于 2014-10-06T19:25:06.950 回答
1

我在尝试获取 MapFragment 时遇到了类似的问题,但由于设备没有更新 Google Play 服务而为空。

于 2014-12-24T18:23:41.543 回答