【问题标题】:Use fragment twice in same layout在同一布局中使用片段两次
【发布时间】:2012-05-22 21:46:02
【问题描述】:

是否可以在一个布局中重复使用一个片段两次?我有两个选项卡的布局,选项卡 A 和选项卡 B.. 每个选项卡显示一个视图,该视图由左侧的项目列表(类型 A 或 B)和右侧的所选项目的详细信息组成。两种类型的列表的“详细视图”(在右侧窗格中)是相同的,因此我希望在根据选择的选项卡换出列表时保留它。

我已尝试在两个选项卡的布局 XML 中包含详细信息片段,但收到有关重复项的运行时错误。因此,我尝试在运行时使用 FragmentTransaction 动态添加它们,但得到了类似的错误(已添加片段)。

我想做的事可能吗?

【问题讨论】:

  • 为什么不能做两种不同的布局?
  • 我可以这样做.. 但这将是很多代码重复。对于两种类型的列表,此详细信息片段是相同的。这就是我要避免的。
  • 为不同的布局小部件使用不同的 android:id 怎么样?你试过吗?
  • 我试过了 - 'class' 属性对于两者都是相同的,但仍然会导致错误。

标签: android


【解决方案1】:

您应该添加fragments,为每个片段动态设置不同的TAGs,然后使用getFragmentManager().findFragmentByTag("TAG"); 找到它们。在每个TAB 视图中,您可以添加FrameLayout,然后使用FragmentTransaction.replace 函数。

我遇到了类似的问题(在ViewFlipper 中多次添加相同的fragment)并通过使用不同的标签解决了它。

【讨论】:

    【解决方案2】:

    您可以创建重复的类。一个从另一个。并将第二个类重命名为另一个名称。

    并将第二个布局设置为

      class="name of second class"
    

    然后重命名 wigdets 以在第二个重命名的类中使用,该类与第一个重命名的类相同,只是不同的小部件 id。

    【讨论】:

    • 那么我必须复制这个类......这是我试图避免的代码重复。我认为这是不可能的,所以我最终走上了这条路。没有那么多额外的工作......
    • 你可以复制课程。您可以只使用不同的命名约定(例如变量和 wigdet 引用名称)。但似乎我们已经找到了解决方案
    • 只是为了澄清像我这样的其他人,浏览这方面的信息,复制课程绝对是荒谬的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多