Android Can';t更改片段SupportMapFragment的容器ID
我开发了一个带有谷歌地图和导航抽屉的应用程序。当我启动应用程序时,地图会显示出来,用户可以打开导航抽屉 当用户单击导航抽屉中的第一个项目时,地图应该显示出来,以防他之前切换到另一个片段。但是,当我调用map fragment时,我的应用程序正在崩溃,错误代码如下:Android Can';t更改片段SupportMapFragment的容器ID,android,android-fragments,supportmapfragment,Android,Android Fragments,Supportmapfragment,我开发了一个带有谷歌地图和导航抽屉的应用程序。当我启动应用程序时,地图会显示出来,用户可以打开导航抽屉 当用户单击导航抽屉中的第一个项目时,地图应该显示出来,以防他之前切换到另一个片段。但是,当我调用map fragment时,我的应用程序正在崩溃,错误代码如下:java.lang.IllegalStateException:无法更改fragment SupportMapFragment的容器ID{36a7826b#0 ID=0x7f0e007a}:was 2131624058现在2131624
java.lang.IllegalStateException:无法更改fragment SupportMapFragment的容器ID{36a7826b#0 ID=0x7f0e007a}:was 2131624058现在2131624057
我在导航抽屉中单击以显示地图的操作是:
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, supportMapFragment)
.addToBackStack(null)
.commit();
它适用于其他片段,但不适用于map片段。映射片段是用xml硬编码的,从一开始就显示出来,并在onCreate方法中实例化,如下所示:supportMapFragment=(supportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)代码>
我的所有其他片段都是通过调用newmyfragment()实例化的代码>和它们扩展片段
非常感谢关于如何修复崩溃和显示地图的任何建议和提示。与其添加和删除地图,不如隐藏和显示地图
首先,这是因为性能和用户界面问题:当您将贴图添加到“活动”时,实际在屏幕上渲染贴图需要一些时间
你可以通过
SupportMapFragment supportMapFragment; // field
supportMapFragment = (SupportMapFragment)getSupportFragmentManager()
.findFragmentById(R.id.map);
// To show map fragment instead of your content fragment
getSupportFragmentManager().beginTransaction()
.show(supportMapFragment)
.remove(yourContentFragment)
.commit();
// And to hide it
getSupportFragmentManager().beginTransaction()
.hide(supportMapFragment)
.add(yourContentFragment)
.commit();
如果您真的需要添加和删除映射,那么您应该以编程方式进行,而不是静态地用xml声明MapFragment。Awesome!这立刻解决了问题。我只是显示设置片段,然后隐藏地图片段。如果我想显示地图,我只需显示地图片段并隐藏设置片段。它工作得很好。谢谢!