现在的位置: 首页 > 综合 > 正文

ActionBarSherlock与Fragment结合实现点击切换页面

2018年06月05日 ⁄ 综合 ⁄ 共 2597字 ⁄ 字号 评论关闭

ActionBarSherlock的使用,在上一篇博客中有详细解释,在这里就不进行赘述了,这里我将使用ActionBarSherlock和Fragment结合实现通过点击的方式达到界面切换的效果。废话不多说了,源码如下:

MainActivity.java代码:

public class MainActivity extends SherlockFragmentActivity {

	/*定义ActionBar*/
	private ActionBar actionBar;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		/*获取Actionbar*/
		actionBar = this.getSupportActionBar();
		/*设置ActionBar的模式为Tab*/
		actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
		
		/*新建2个Tab*/
		ActionBar.Tab tabA = actionBar.newTab().setText("A Tab");
		ActionBar.Tab tabB = actionBar.newTab().setText("B Tab");
		
		/*创建Fragmnet对象*/
		Fragment fragmentA = new AFragmentTab();
		Fragment fragmentB = new BFragmentTab();
		
		/*设置这两个Tab对应的监听事件*/
		tabA.setTabListener(new MyTabListener(fragmentA));
		tabB.setTabListener(new MyTabListener(fragmentB));
		
		/*把tabA和tabB添加到actionBar中*/
		actionBar.addTab(tabA);
		actionBar.addTab(tabB);
		
		
		
	}

	
	/**
	 * 创建TabListener回调
	 */
	protected class MyTabListener implements TabListener{

		/*定义Fragment对象*/
		private Fragment fragment;
		
		/*构造函数*/
		public MyTabListener(Fragment fragment) {
			super();
			this.fragment = fragment;
		}

		/**
		 * 这个方法很重要
		 */
		public void onTabSelected(Tab tab, FragmentTransaction ft) {
			
			/*把当前对应的fragment添加到FragmentTransaction中*/
			ft.add(R.id.fragment_container, fragment);
			
		}

		@Override
		public void onTabUnselected(Tab tab, FragmentTransaction ft) {

			ft.remove(fragment);
			
		}

		@Override
		public void onTabReselected(Tab tab, FragmentTransaction ft) {
			// TODO Auto-generated method stub
			
		}
		
	}
	 
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getSupportMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

AFragmentTab.java代码:

public class AFragmentTab extends SherlockFragment {

	/**
	 * 返回Fragment视图
	 */
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		
		View rootView = inflater.inflate(R.layout.fragment_a, container, false);
		return rootView;
	}
}

BFragmentTab.java代码:

public class BFragmentTab extends SherlockFragment {

	/**
	 * 返回Fragment视图
	 */
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
	
		View rootView = inflater.inflate(R.layout.fragment_b, container, false);
		
		return rootView;
	}
}

activity_main.xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal" >
    </LinearLayout>

</LinearLayout>

另外不要忘记,在清单文件中修改主题样式:

 android:theme="@style/Theme.Sherlock.Light"

demo效果展示:

demo下载:http://download.csdn.net/detail/lzm1340458776/7320369

抱歉!评论已关闭.