【问题标题】:Multiple fragments and activities interaction design多片段和活动交互设计
【发布时间】:2012-07-26 22:09:29
【问题描述】:

您好,我有三个活动及其对应的片段A、B 和C。片段A 是一个静态片段,其他片段是动态的。

Activity A 已经实现了片段A 的监听器,用于横向加载片段B 或在单个窗格中移动到新屏幕。

我想要的是当在片段B 中按下某个按钮时,它会调用片段C,我希望它被片段C 横向替换(片段A 仍然存在)或在单窗格模式下打开一个新屏幕。我在活动 B onCreate 方法中有这个简单的代码:

if (getResources().getConfiguration().orientation == 
            Configuration.ORIENTATION_LANDSCAPE) {
        finish();
        return;
    }

我试图避免片段之间的交流,因为它不受欢迎。那么这是否意味着我必须在活动A 和B 中实现片段B 的侦听器,我猜测在横向活动A 中会加载片段C 和纵向B接手?有没有更好的办法?。我想只在活动B 中实现监听器并在横向时传递给活动A,但我认为由于上面的代码,它甚至在它通过之前就已经完成了。有什么想法吗?

【问题讨论】:

  • 有人有什么想法吗?.. 请我说清楚让你们理解。谢谢

标签: android android-fragments


【解决方案1】:

...这是否意味着我在两者中都实现了片段 B 的侦听器 活动 A 和 B,我猜在景观方向 Activity A 会加载 Fragment C 并且在纵向上,B 接管或 有没有更好的办法?我想只在活动 B 中实现监听器和 在横向方向时传递给活动 A,但我认为它会 由于上面的代码,它甚至在通过之前就完成了。

您不能只在B 活动中实现监听器,因为A 活动必须能够以横向显示片段C。如果您担心代码重复,那么您可以实现一个基本活动,您可以为其实现回调以显示片段 C,并使您的两个活动从该基类扩展。

由于您没有发布任何有关如何管理这些片段的真实代码,请记住,如果您处于纵向(在显示片段 B 的 B 活动中)并通过单击(或任何您做)你用C替换片段,如果你将方向切换到横向,这将不会被带到活动A。

【讨论】:

  • 感谢您的回复。在他们两个中实现监听器都很好。我只是担心如果我是纵向的,这两个活动是否都会调用 C。至于你的第二点,并没有真正想到这一点。可能在 Activity A 中创建一个静态方法,Activity B 在切换到方向时可以调用该方法。你有什么建议?..
  • 我管理这些片段的代码(除了我使用 ActionBarSherlock)就像它在 android 开发者资源和其他教程中的样子,所以认为没有必要再次提出它。 :)
  • @manuelJ 在活动 A 中调用方法不是 android 中推荐的方法,因为您无法控制活动生命(当您在 B 中时它可能会被破坏)活动)。我做了一个简单的例子来说明我将如何处理你目前的情况(在这里找到它gist.github.com/3197234)。我希望你能理解它(它有效,但我没有对其进行过多测试),它是一个具有两种不同布局和一些额外的东西的单一活动,以使后退按钮与片段一起使用。
  • 非常感谢!!正是我需要为我指明正确的方向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多