如何在Android上将Master/Detail Flow与选项卡一起使用

13
我希望我的Android应用程序能够实现以下布局(平板电脑的上部布局,智能手机的下部布局),包括在子项之间滑动的功能: Application Layout on Tablet (upper) and on Smartphone (lower) 所以,我使用Eclipse创建了一个Master/Detail-Flow Activity,工作得很好。对于选项卡,我查看了Support-Library Samples(<sdk>/extras/android/support/v4/samples/),其中提供了一个漂亮的示例(FragmentTabsPager.java),它扩展了FragmentActivity类,并使用了ViewPagerTabHost-Widget。
我的想法是将两个示例合并成一个应用程序,所以我不想使用TabPage作为Activity,而是要将其作为Fragment。在智能手机上,这很好用,但在平板电脑上仅起作用一次(意思是第一次启动时,内容会正确加载,但是只要我在左侧列表中点击另一个项目,就不会再加载任何内容)。更准确地说:选项卡已加载并具有正确的标签,但应显示在选项卡内容区域中的内容不在那里,尽管您可以在选项卡之间滑动,就像内容存在一样。
我的问题是:
  • 这种方法是否有意义(将主/详细信息与选项卡组合起来)?还是我应该使用完全不同的方法?
  • 您知道如何解决内容未正确加载的问题吗?
为了更容易看到,我从头开始创建了一个演示应用程序,其中包含这个想法,可从 https://github.com/apacha/MasterDetail_And_Tabs 下载。

与问题无关的Stackoverflow相关帖子:ViewPager PagerAdapter未更新View,

编辑1:我了解到http://developer.android.com/reference/android/support/v4/app/FragmentTabHost.html并发现Android FragmentTabHost - Not fully baked yet?。有了这些提示,我几乎可以运行它了,但现在我可以选择一个工作版本,该版本不提供滑动支持(如果我直接将选项卡添加到tabHost中:

FragmentTabHost mTabHost = new FragmentTabHost();
// Add directly to tab-host
mTabHost.addTab(mTabHost.newTabSpec("simple1").setIndicator("Simple1"), CountingFragment.class, b);

如果我添加并使用FragmentPagerAdapter,可能会出现一个有缺陷的滑动实现。
FragmentTabHost mTabHost = new FragmentTabHost();
ViewPager mViewPager = (ViewPager) rootView.findViewById(R.id.pager);
TabsAdapter mTabsAdapter = new TabsAdapter(getActivity(), mTabHost, mViewPager);
// Add to tab-host-adapter
mTabsAdapter.addTab(mTabHost.newTabSpec("simple1").setIndicator("Simple1"), CountingFragment.class, b);

我已经将所有更改提交到上述存储库中。


你解决了这个问题吗?我想要完全相同的结构,考虑采用类似的方法。 - AlvaroSantisteban
很遗憾,不是。但如果您成功运行它,如果您能将解决方案添加到上面的存储库中以供未来遇到相同问题的访问者使用(创建一个pull-request),那就太好了。 - Alexander Pacha
1个回答

2
我在这里实现了简单的主从设计:https://github.com/ycagri/MasterSlave。我将其放在了公共仓库中。如果您想玩耍并添加更多功能,请随意分叉。savedInstanceState可用于方向更改。
基本上,项目有两个MainActivity布局,一个在layout文件夹中,另一个在layout-sw600dp-land文件夹中。在平板电脑横向模式下,片段定义在布局内。否则,使用片段管理器添加片段。如果您可以从布局中找到slave片段,则正在使用带有横向模式的平板电脑。
希望这能帮助到您...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接