13

我想为我的 android-application 实现以下布局(平板电脑的上部布局,智能手机的下部布局),包括在子项之间滑动的能力: 平板电脑(上)和智能手机(下)上的应用程序布局

所以我用 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 not updates the View

Edit1:我了解了http://developer.android.com/reference/android/support/v4/app/FragmentTabHost.html并发现Android FragmentTabHost - 还没有完全出炉?. 有了这些提示,我设法让它几乎运行起来,但现在我可以在不提供滑动支持的工作版本之间进行选择(如果我将选项卡直接添加到 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);

我已经对上面提到的存储库提交了所有更改。

4

1 回答 1

2

我在这里https://github.com/ycagri/MasterSlave实现了简单的主从设计。

我把它保存在一个公共回购中。如果您想玩并添加更多功能,请随时 fork。savedInstanceState 可以实现方向更改。

基本上,项目在 layout 和 layout-sw600dp-land 文件夹中有两个 MainActivity 布局。在平板电脑环境中,在布局内定义的片段。否则,使用片段管理器添加片段。如果您可以从布局中找到从属片段,则您正在使用具有横向模式的平板电脑。

希望这可以帮助...

于 2015-11-27T15:20:13.540 回答