0

刚刚在 Eclipse 的最新 ADT 版本中创建了一个新项目,发现它会设置某些环境让您开始工作。我选择 Tabs + Swipe。

它有这个代码我有疑问:

 public static class DummyFragment extends Fragment {
    public DummyFragment () {
    }

    public static final String ARG_SECTION_NUMBER = "section_number";

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        TextView textView = new TextView(getActivity());
        textView.setGravity(Gravity.CENTER);
        Bundle args = getArguments();
        textView.setText(Integer.toString(args.getInt(ARG_SECTION_NUMBER)));
        return textView;
    }
}

两个选项卡都引用同一个片段。它所做的只是切换 TextView 上带有标签位置编号(1、2 或 3)的内容。

  1. 首先是更高级的问题:我想要选项卡切换到的两个不同的片段。在示例代码中,它指向同一个片段。这种变化发生在哪里?我可以看到简短的代码示例吗?

  2. 更简单的问题:我有两个预定义的 XML 布局,我想用它来设置每个选项卡(或片段)。我在实际的片段中这样做吗?如果是这样,在哪里?setContentView 似乎在 onCreateView 方法中不起作用?

4

1 回答 1

2
  1. 不太确定这个问题到底在问什么,但如果我理解正确的话TabHost(或者你用来管理Fragment标签的任何东西)正在实例化多个实例,DummyFragment然后在单击标签时将每个实例附加到屏幕上。这一切都在幕后完成......您需要担心的是实现Fragment并告诉它TabHost何时应该被实例化/显示。

  2. Fragments没有setContentView方法。您应该Fragment从 xml 中扩充您的布局onCreateView。例如,

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_layout, container, false);
    }
    
于 2012-07-15T03:25:04.680 回答