本篇文章通过一个例子说明Fragment的使用
第一步:新建工程,并添加需要的图片资源
第二步:建立四个子布局文件
main_tab1.xml
第三步:建立四个子布局文件对应的源文件
MainFragmentTab1.java
public class MainFragmentTab1 extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
System.out.println("MainTab1 onCreate");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
System.out.println("MainTab1 onCreateView");
return inflater.inflate(R.layout.main_tab1, container, true);
}
}
public class MainFragmentTab2 extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
System.out.println("MainTab2 onCreate");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
System.out.println("MainTab2 onCreateView");
return inflater.inflate(R.layout.main_tab2, container, true);
}
}
public class MainFragmentTab3 extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
System.out.println("MainTab3 onCreate");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
System.out.println("MainTab3 onCreateView");
return inflater.inflate(R.layout.main_tab3, container, true);
}
}
public class MainFragmentTab4 extends Fragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
System.out.println("MainTab4 onCreate");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
System.out.println("MainTab4 onCreateView");
return inflater.inflate(R.layout.main_tab4, container, true);
}
}
第四步:建立主界面的源文件,同时管理四个子文件
public class MainActivity extends FragmentActivity
{
private TabHost mTabHost;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//取得TabHost对象
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
mTabHost.setup();
//为TabHost添加标签
mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Frag1",getResources().getDrawable(R.drawable.tab_tbox1)).setContent(R.id.tab1));
mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("Frag2",getResources().getDrawable(R.drawable.tab_tbox2)).setContent(R.id.tab2));
mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Frag3",getResources().getDrawable(R.drawable.tab_tbox3)).setContent(R.id.tab3));
mTabHost.addTab(mTabHost.newTabSpec("tab4").setIndicator("Frag4",getResources().getDrawable(R.drawable.tab_tbox4)).setContent(R.id.tab4));
//设置TabHost的背景颜色
mTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150));
//设置当前显示哪一个标签
mTabHost.setCurrentTab(0);
//标签切换事件处理,setOnTabChangedListener
mTabHost.setOnTabChangedListener(new OnTabChangeListener()
{
@Override
public void onTabChanged(String tabId)
{
Toast.makeText(MainActivity.this, "你选择了标签为:"+tabId, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
竖屏效果
横屏效果
源代码下载