我想为我的 android-application 实现以下布局(平板电脑的上部布局,智能手机的下部布局),包括在子项之间滑动的能力:
所以我用 Eclipse 创建了一个 Master/Detail-Flow Activity,效果很好。对于选项卡,我查看了 Support-Library Samples ( <sdk>/extras/android/support/v4/samples/
),其中给出了一个漂亮的示例 (FragmentTabsPager.java),它扩展了FragmentActivity
类并使用ViewPager
了TabHost
-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);
我已经对上面提到的存储库提交了所有更改。