gpt4 book ai didi

android - 无法更改 fragment SupportMapFragment 的容器 ID

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:02:55 24 4
gpt4 key购买 nike

我开发了一个带有 Google map 和抽屉导航的应用程序。当我启动应用程序时,会显示 map ,用户可以打开抽屉导航。

当用户点击抽屉导航中的第一项时, map 应该会显示出来,以防他之前切换到另一个 fragment 。但是,当我调用 map fragment 时,我的应用程序崩溃并出现以下错误代码:java.lang.IllegalStateException: Can't change container ID of fragment SupportMapFragment{36a7826b #0 id=0x7f0e007a}: was 2131624058 now 2131624057

我在 onItemClick 中的抽屉导航中显示 map 的操作是:

getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, supportMapFragment)
.addToBackStack(null)
.commit();

它适用于其他 fragment 但不适用于 map fragment 。 map fragment 在 xml 中硬编码以从头显示它并在 onCreate 方法中实例化如下:supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);

我的所有其他 fragment 都是通过调用 new MyFragment(); 实例化的,它们扩展 Fragment

非常感谢任何关于如何修复崩溃和显示 map 的建议和提示。

最佳答案

与其添加和删除 map ,不如隐藏和显示它。

首先是因为性能和用户界面问题:当您将 map 添加到 Activity 时 - 在屏幕上实际呈现 map 需要一些时间。

你可以通过

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();

如果您确实需要添加和删除 map ,您应该以编程方式进行,而不是在 xml 中静态声明 MapFragment。

关于android - 无法更改 fragment SupportMapFragment 的容器 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33875970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com