gpt4 book ai didi

Android - 重新膨胀 fragment 导致 "Error inflating class fragment"

转载 作者:行者123 更新时间:2023-11-29 00:17:01 26 4
gpt4 key购买 nike

我是 Android 开发的新手,但已经遇到了大麻烦。我在这里和其他网站上阅读了几个关于类似甚至相同问题的主题。但我找到的所有答案都不符合我的需要,或者根本不适合我。

事情是这样的。我有一个带有自制“菜单”层的 Activity ,包括 Activity 底部的 3 个按钮和上面的 ScrollView。现在,在单击这些按钮之一时,我只需使用

将一个 fragment 膨胀到 ScrollView 中
svContent.removeAllViews();
getLayoutInflater().inflate(R.layout.fragment_xyz, (ScrollView) findViewById(R.id.svContent));

充气完好。

现在膨胀的 fragment 包含另一个 Google map (API 2) fragment ,看起来像这样。

<fragment
android:id="@+id/fMap"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="fill_parent"
android:layout_height="150dp" />

这个 fragment 也按照我想要的方式填充其父 fragment 的膨胀并且 map 工作正常。

现在我单击另一个菜单按钮以膨胀另一个 fragment 。但是,当我再次单击第一个 fragment 的按钮时,出现以下错误:

Duplicate id xxxxx, tag null, or parent id xxxxx with another fragment for com.google.android.gms.maps.MapFragment

就像我说的,我已经尝试了几种在网上找到的解决方案,包括

  • 从扩展 Fragment 到 FragmentActivity
  • 使用 SupportMapFragment 而不是 Fragment
  • 从代码而不是 XML 扩展子 fragment (Google map fragment )

所有这些都有一些我目前无法接受的缺点(至少我认为)或者对我或我的星座“不起作用”

非常感谢任何帮助。如果您需要更多信息,请告诉我。

问候,D.

最佳答案

要替换 ScrollView 中的 fragment :

    SupportMapFragment mapFragment = MapFragment.newInstance();
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
ft.replace(R.id.svContent, _mapFragment );
ft.commit();

如果您想使用后退按钮返回到上一个 fragment ,请在提交前添加 ft.addToBackStack(null);

就是这样。顺便说一下,您可能不应该将 ScrollView 作为 fragment 的容器。如果内容必须是可滚动的,请将滚动放在您的 fragment 中,然后将 fragment 放在 LinearLayout/FrameLayout/RelativeLayout 中。

关于Android - 重新膨胀 fragment 导致 "Error inflating class fragment",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25817124/

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