使用百度地图 Android 地图sdk,我想要在一个Activity里两个自己定义的Fragment里各自都设置一个百度地图容器View实例,两个Fragment的布局文件里都设置了com.baidu.mapapi.map.MapView控件,有什么办法能让这两个正常显示,并且互不干扰?
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/showmap
这是官方文档的说明,但写的太简单太碎片化,根本推理不出成功的代码方式,如果我按照它的写:
<fragment
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
class="com.baidu.mapapi.map.SupportMapFragment"
会抛出如下错误,
Inconvertible types; cannot cast 'androidx.fragment.app.Fragment' to 'com.baidu.mapapi.map.SupportMapFragment'
包裹Fragment的Activity继承是AppCompatActivity。
这要怎么解决,有没有在一个Activity里两个自定义的Fragment里各自使用百度地图独立的实例的代码示例?
@齿轮1:主要是Fragment切换,我目前配置三个fragment,都被FrameLayout包裹,用户点击手机下方任意三个按钮,会切换显示对应的Fragment内容,需求上有两个Fragment要配置地图相关的ui显示。因此我觉得需要在两个显示地图ui的Fragment里各自建立百度地图容器实例。我不知道这个想法是不是对的,但我知道两个地图实例可以减少前端状态管理的麻烦。不过除了这个还有其他方法么。
(2020/08/20 16:59)
@dojob : 在Activity中 布局xml中创建一个地图 ?那不在布局容器配置地图实例,直接在Activity.java 用java代码里配置地图实例,然后添加到fragment里的内部某个布局容器里。这个会有问题么?
@齿轮1 : 最简单的方式在Activity中 布局中创建一个地图 , Fragment add Activity时 可以获取到 Activity引用, 在Fragment中通过Activity引用不就可以操作地图了吗
“class 这么写不好吧”,我不知道,这是百度地图官方开发者文档的写法,写的太碎片化,我根本不知道。如果按我的想法就是,直接在我自己定义的Fragment的xml用com.baidu.mapapi.map.MapView。