我已经检查了周围,我发现没有人问过这个问题,因为人们正在做的是更换碎片以便向他们展示这些或那样的时刻。除了在LinearLayout
内加载了5个相同实例片段的this guy。
我想要做的事情非常简单,我想要一个活动向我展示3个片段(同一个类的实例,它会扩展相同的布局)。
每次我实例化我的自定义Fragment
课程时,我都会使用加载地图的<fragment/>
为一个xml充气。开始时,编译器告诉我Duplicate id with another fragment
因为<fragment/>
在所有3个片段中都有相同的id(它是相同的xml被充气)。
所以我将<fragment/>
替换为<FrameLayout/>
(再次使用相同的ID),并动态加载地图。我期待同样的错误,但它没有发生,问题是,它只显示第一个地图(在屏幕的第三个),而其他碎片没有显示任何内容。
我可以在屏幕3地图中做什么,每个地图都有一个不同的片段?
Pdt:我已经尝试加载带有不同标签的地图,每个片段一个。没有工作。
我刚刚尝试了一些东西,记住问题与ID有关。我尝试的是在我的自定义类int mapId
中添加一个属性,并在分别使用ID 1,2和3实例化片段后设置它。
现在,在onCreateView()
返回膨胀的视图之前,我设置容器<FrameLayout/>
做frame.setId(frame.getId()+mapId);
...最后在容器中动态加载地图时,我要求身份R.id.map+mapId
。好吧,它奏效了:
这是可接受的或值得推荐的做法吗?优点缺点?手动修改id的几率是多少,它会导致与另一个现有的自动生成ID冲突?