ViewPager中的Android Master / Detail流程

时间:2013-01-27 12:34:21

标签: android android-activity android-viewpager fragment master-detail

我遇到了一个我无法解决的问题,我搜索了很多但找不到解决方案。

在我的应用程序中,我有一个包含3页的ViewPager。这些页面应该是碎片。这没关系。但是,其中两个页面必须是主/详细信息流(一个用于朋友列表,一个用于新闻提要)。当我使用eclipse 2片段创建主/细节流时,会创建2个活动。 ItemListActivity(需要显示的那个)实现片段的Callbacks,这是一个Activity,但ViewPager只接受片段内部的片段。

所以问题是:如何将主/细节流放在ViewPager中?

非常感谢所有帮助! 我在这里完全没有想法。

由于

1 个答案:

答案 0 :(得分:11)

主/细节流只是在同一内容视图中使用的2个片段的昵称,一个在左侧,一个在右侧。这是一般的想法。现在,Master / Detail Flow可以在Activity内部使用(就像Eclipse对你所描述的模板一样)或者在Fragment中使用,幸运的是,因为Android 4.2在其他Fragments中引入了Fragments(旧版本的Android兼容性库也支持这一点) Android)。

Eclipse生成的模板包含在Activity(在平板电脑上)或2个Activity(用于手机)中,因为Eclipse不知道你需要片段内的主/细节。所以,你不能依赖Eclipse的模板。但是将2个片段放入另一个片段并不难。

你只需要忘记ViewPager一段时间,然后在包含Master / Detail Flow的Fragment中做你的工作,我们称之为MasterFragment。

  1. 再声明2​​个片段:InnerListFragment,InnerDetailFragment。也是电话的InnerDetailActivity。
  2. 为MasterFragment声明2个XML布局文件:

    • layout / fragment_master.xml - 仅在内部添加InnerListFragment <fragment>标记
    • layout-sw600dp / fragment_master.xml(对于平板电脑&gt; 7“) - 添加InnerListFragment和InnerDetailFragment <fragment>标记。
  3. 现在,我不会在这里详细介绍您的所有Java代码,但在MasterFragment.java中,您需要检查设备是否是平板电脑,以便您知道屏幕上哪两个片段处于活动状态。

    • 如果是手机,则只能看到InnerListFragment。所以只需添加列表,onClickListener将启动InnerDetailActivity,您需要在其中放置InnerDetailFragment。

    • 如果它是平板电脑,则两个内部碎片都可见。单击列表项时不要启动新活动,只需在MasterFragment中引用这两个片段,即可在它们之间进行通信。

  4. 这是一般的想法。如果您仍有疑问,请询问。