操作栏选项卡导航设计/问题

时间:2013-04-04 17:35:59

标签: android android-fragments actionbarsherlock

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

我想知道从现有片段向屏幕添加新片段的最佳方法。我目前的详细视图都是作为活动实现的(由于操作栏标签不存在,这显然不太理想,使用后退按钮导航返回到选项卡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的运作方式有些不同。

谢谢!

1 个答案:

答案 0 :(得分:1)

正如Supporting Tablets and Handsets training document中所述,使用Fragment显示主/详细视图的标准方法是在手机上单独进行活动(当您没有足够的空间来显示两者时)在平板电脑上并排。 SDK附带了一个Master / Detail示例,它实现了这个建议(如果您使用的是Eclipse,请转到New-> Other-> Android-> Android Activity-> Master / Detail Flow)。

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

您可能会发现一些有用的其他信息是Multi-pane layout design guidelines和整个Fragment Training set