1

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

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

android:layout_height="match_parent" />

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

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

2 回答 2

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对象。

于 2013-09-23T13:06:07.790 回答
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

于 2013-09-23T13:08:06.743 回答