Android之Fragment多个页面切换实现

本篇文章通过一个例子说明Fragment的使用


第一步:新建工程,并添加需要的图片资源


第二步:建立四个子布局文件

main_tab1.xml



    
    
        
    
        

main_tab2.xml



    
    
        
    



main_tab3.xml



    
    
        
    
    



main_tab4.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);
	}
}

MainFragmentTab2.java

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);
	}
}

MainFragmentTab3.java

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);
	}
}

MainFragmentTab4.java

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;
	}

}

第六步:查看效果

竖屏效果

Android之Fragment多个页面切换实现_第1张图片 Android之Fragment多个页面切换实现_第2张图片 Android之Fragment多个页面切换实现_第3张图片 Android之Fragment多个页面切换实现_第4张图片


横屏效果

Android之Fragment多个页面切换实现_第5张图片 Android之Fragment多个页面切换实现_第6张图片 Android之Fragment多个页面切换实现_第7张图片 Android之Fragment多个页面切换实现_第8张图片


源代码下载



你可能感兴趣的:(Android开发)