1

我正在尝试GoogleMap从对象中获取SupportMapFragment对象。因为我也希望在 API 级别 8 上进行这项工作,所以像这样的解决方案findFragmentById对我不起作用..

我有这个 XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:background="#fff"
   android:id="@+id/map_view"
   android:layout_height="match_parent" >
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:map="http://schemas.android.com/apk/res-auto"
      android:id="@+id/map"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:name="com.google.android.gms.maps.SupportMapFragment"
      map:cameraZoom="11"
      map:cameraTargetLat="32.1275701"
      map:cameraTargetLng="34.7983432"
      map:uiZoomControls="false"/>

   <ImageView
        android:id="@+id/button_image"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="bottom"    
        android:contentDescription="@string/back"    
        android:layout_alignParentBottom="true"
        android:clickable="true"
        android:onClick="returnToMain"
        android:background="@drawable/return_button" />
    </RelativeLayout>

更新:

Java 代码:

public void category(View v){
    if(isNetworkAvailable()){
        if(viewMap==null){
            setContentView(R.layout.map_view);
            viewMap=(RelativeLayout)findViewById(R.id.map_view);
            Fragment ssmf=getFragmentManager().findFragmentById(R.id.map);
            mapObject=((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
            mapObject.addMarker(new MarkerOptions()
            .position(new LatLng(32.1275701, 34.7983432))
            .title("Hello world"));
        }
        else{
            setContentView(viewMap);
        }
    }
}

我收到了这个错误:

无法将表单Fragment转换为SupportMapFragment

4

2 回答 2

3

使用 SupportFragment 时使用 getSupportFragmentManager()。

于 2013-03-13T11:21:42.320 回答
2

因为我也希望在 API 级别 8 上进行这项工作,所以 findFragmentById 之类的解决方案对我不起作用。

是的,它会。从你的FragmentActivity, 在你对上面的布局进行膨胀之后,调用findFragmentById(R.id.map),将结果转换为 a SupportMapFragment,然后调用getMap()它来检索你的GoogleMap对象。

于 2013-01-02T19:54:53.130 回答