Android Actionbar选项卡导航设计/问题

Android Actionbar选项卡导航设计/问题,android,android-fragments,actionbarsherlock,Android,Android Fragments,Actionbarsherlock,我正在尝试使用Actionbar选项卡和片段实现一个非常基本的导航结构。基本上,我有三个片段,它们是使用actionbar上的选项卡选择的。这些片段中的每一个都是一个listview,它应该允许用户选择一个项目并打开一个详细视图 我想知道从现有片段向屏幕添加新片段的最佳方法。我目前将所有细节视图都实现为活动(这显然不理想,因为操作栏选项卡不存在,使用“后退”按钮进行导航时,无论当前位置如何,都会返回到选项卡1) 我在MainActivity中添加所有列表片段 public void on

我正在尝试使用Actionbar选项卡和片段实现一个非常基本的导航结构。基本上,我有三个片段,它们是使用actionbar上的选项卡选择的。这些片段中的每一个都是一个listview,它应该允许用户选择一个项目并打开一个详细视图

我想知道从现有片段向屏幕添加新片段的最佳方法。我目前将所有细节视图都实现为活动(这显然不理想,因为操作栏选项卡不存在,使用“后退”按钮进行导航时,无论当前位置如何,都会返回到选项卡1)

我在MainActivity中添加所有列表片段

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        if (tab.getPosition() == 0) {
            Frag1 frag = new Frag1();
            ft.replace(android.R.id.content, frag);
        } else if (tab.getPosition() == 1) {
            Frag2 frag = new Frag2();
            ft.replace(android.R.id.content, frag);
        } else if (tab.getPosition() == 2) {
            Frag3 frag = new Frag3();
            ft.replace(android.R.id.content, frag);
        }
    }
我需要在这些片段上实现什么才能启动详细视图?我已经尝试过类似的方法,但导航仍然无法按我所希望的方式工作

private void onListItemClick(View v, int pos, long id) {
    Log.d(TAG, "Clicked at position: " + pos);
    NewsModel selectedModel = newsItems.get(pos);
    Log.d(TAG, "Item: " + selectedModel.getTitle());

    NewsDetailFragment fragment = NewsDetailFragment.newInstance(selectedModel);
    FragmentTransaction ft  = getFragmentManager().beginTransaction();
    ft.replace(R.id.content, fragment);
    ft.addToBackStack(null);
    ft.commit();
我通常来自iOS世界,所以我的一些范例可能与Android的功能有点不符

谢谢

如中所述,使用
片段
s显示主视图/详细视图的标准方法是在手机上(当您没有足够的空间同时显示时)和平板电脑上并排显示。SDK附带了一个实现此建议的主/细节示例(如果您使用Eclipse,请转到New->Other->Android->Android Activity->Master/Detail Flow)

您可以将此培训与已有的选项卡代码相结合(选择选项卡时替换左侧片段,可能还希望在选择选项卡时删除右侧的详细视图),以获得在所有Android设备上都能工作的布局


您可能会发现一些有用的附加信息以及整个信息。

为什么返回时总是加载选项卡1?您应该保存用户选择的选项卡,并在活动重新加载时将其还原。否则,当他们按“主页”按钮返回时,你也会遇到同样的问题。我想这是一个与我的主要问题不同的问题(很容易解决)。一旦我显示了一个列表片段,我如何处理显示一个新的“细节”片段并获得所需的后退或向上按钮行为?我是否需要重写任何方法来解除刚刚添加到backbackback中的事务?因此,看起来我需要将包含在单独活动中的细节片段与主片段分开(至少对于较小的屏幕设备)。这看起来正是我想要的;我今天要试一试。