我在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();
答案 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