2012-07-15 78 views
0

刚刚在Eclipse中最新的ADT版本中创建了一个新项目,并发现它将为您创建特定环境来启动项目。我选择Tabs + Swipe。将内容分配给片段中的选项卡 - Android

它具有这样的代码,我有一个问题:

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方法中工作?

+0

什么是'RateFragment'? – 2012-07-15 02:55:00

+0

对不起,错误。修复。 – KickingLettuce 2012-07-15 03:06:35

回答

2
  1. 不是真的知道什么这个问题是问究竟,但如果我理解正确的TabHost(或任何你正在使用管理Fragment选项卡)被实例化DummyFragment的多个实例,然后连接各当点击一个标签时,屏幕会显示在屏幕上。这些都是在幕后完成的......所有你需要担心的是实现Fragment并告诉TabHost何时应该实例化或显示。

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

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
        return inflater.inflate(R.layout.fragment_layout, container, false); 
    } 
    
+0

谢谢,问题#2完美回答。 #1?我认为这是一个令人困惑的问题。也许你可以指点我一个很好的示例API项目,它使用了制表符? – KickingLettuce 2012-07-15 16:39:03