如何将一个新的谷歌地图视图(新的api v2 for android)作为项目添加到列表视图中?

时间:2013-09-23 09:45:04

标签: android google-maps listview

我在listview中使用mapview,它是listview中项目视图的一部分,现在我需要将api v1更改为v2,但我不能,因为新的api仅支持带有frgment的GoogleMap视图,我不知道如何实现它,它总是说“java.lang.ClassCastException:com.google.android.gms.maps.MapFragment不能转换为android.support.v4.app.Fragment”。这里的任何人都可以帮忙?非常感谢! 我使用的关键代码与blew相同: 在布局中,我将以下代码添加到LinearLayout:

<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"

android:layout_height =“match_parent”/&gt;

在java代码中,我尝试以这种方式获取GoogleMap视图(在我自己的适配器的getView方法中扩展了BaseAdapter),这里是代码:

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

2 个答案:

答案 0 :(得分:0)

您收到的错误源于您尝试使用MapFragment对象在XML文件中指定的SupportFragmentManager对象。

而是使用FragmentMananger对象获取MapFragment,如下所示:

GoogleMap mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

当然,这取决于您为应用程序开发的目标API。如果你的taget api> 11然后使用以下行和一个简单的Activity类。在其他情况下,将地图的XML对象更改为SupportMapFragment并使用您使用的行:

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

在这种情况下,Acitivity应扩展FragmentActivity个对象。

答案 1 :(得分:0)

尝试使用像这样的

`

<fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

`

和像这样的java代码

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

并确保您的类扩展了FragmentActivity