【问题标题】:replace a Fragment from another Fragment从另一个 Fragment 替换一个 Fragment
【发布时间】:2016-07-28 14:26:47
【问题描述】:

我在 Fragment 中有一个人员列表视图,我想在单击人员项时显示人员详细信息。问题是:单击列表项时的最佳做法是什么?打开一个activity好还是使用另一个fragment好?在第二种情况下,它将是另一个片段中的一个片段,我不知道这是否是个好主意。为了更好地理解我的问题,只需在 Android Marshmallow 中打开 Mail 应用程序并想象(我认为它是这样实现的)电子邮件列表位于片段内,当您单击电子邮件时打开片段或活动?

【问题讨论】:

标签: android listview android-fragments android-6.0-marshmallow


【解决方案1】:

尝试以下pseudocode 来实施您自己的解决方案:

  • FragmentOne 中使用interfaceevent
  • ActivityOverride其方法中实现interface
  • 在该方法中,只需获取所选项目的位置(将其传递给第一个片段内的方法)并使用它在FragmentTwo 中显示详细信息
  • 最简单的方法是创建一个Bundle,将Extra设置为用户选择的position,最后将arguments设置为片段并加载 通过替换当前显示的fragment. 到视图
  • 加载片段时,应让片段本身加载所选项目的详细信息。该活动将只是中介!

这就是你要做的所有事情。让我知道它是否有帮助!祝你好运!

【讨论】:

  • 我实现了你所说的,我明白了逻辑,但后来我开始努力使用灵活的 UI 模式来正确显示不同设备中的片段 (developer.android.com/images/fundamentals/fragments.png)。 Android doc 的选择之一是当您单击一个项目时启动另一个 Activity,以防没有空间容纳另一个片段。这就是让我困惑的地方。
  • 对于平板电脑,左边有列表,右边有详细信息!最简单的方法是检测是否加载了详细信息片段(使用 findFragmentById),如果它为空,则表示您使用的是较小的设备;您正在使用平板电脑的其他人
  • 好的,一个简单的 if 子句。如果您使用的是较小的设备,那么您打开一个包含详细信息片段的新活动,或者您将列表片段替换为详细信息片段?
  • 如果您使用的是小型设备,如果 details 片段为空,则 if 语句应重定向到 details 活动;
猜你喜欢
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
相关资源
最近更新 更多