如何在Android上使用Master/Detail Flow和Tabs

Ale*_*cha 12 layout android master-detail android-tabs

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

所以我用Eclipse创建了一个Master/Detail-Flow活动,它运行正常.对于标签我已经看了一下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 - 尚未完全出炉?.有了这些提示,我设法让它几乎运行,但现在我可以选择一个不提供滑动支持的工作版本(如果我将Tabs直接添加到tabHost:

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

如果我添加它并使用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);
Run Code Online (Sandbox Code Playgroud)

我已经将所有更改提交到上面提到的存储库.

yca*_*gri 2

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

我把它保存在公共仓库中。如果您想尝试并添加更多功能,请随意 fork。可以为方向改变实现savedInstanceState。

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

希望这可以帮助...