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

Fragment与ActionBar的结合使用

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

Fragment的应用相当之广泛,现在我们来看一下Fragment和ActionBar的结合使用。

MainActivity.java代码:

public class MainActivity extends Activity {

	/* 定义actionBar */
	private ActionBar actionBar;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		/* 获取ActionBar对象 */
		actionBar = this.getActionBar();
		/* 设置ActionBar的导航模式 */
		actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

		/**
		 * 创建选项卡
		 */
		actionBar.addTab(actionBar.newTab().setText("系统管理")
				.setIcon(getResources().getDrawable(R.drawable.ic_launcher))
				.setTabListener(new MyTabListener())
				.setTag(1));

		actionBar.addTab(actionBar.newTab().setText("用户管理")
				.setIcon(getResources().getDrawable(R.drawable.ic_launcher))
				.setTabListener(new MyTabListener())
				.setTag(2));

		actionBar.addTab(actionBar.newTab()
				.setText("产品管理")
				.setIcon(getResources().getDrawable(R.drawable.ic_launcher))
				.setTabListener(new MyTabListener())
				.setTag(3));
	}

	/**
	 * 设置Tab的监听事件
	 */
	public class MyTabListener implements ActionBar.TabListener {

		/* 这个方法表示操作栏被选中的事件 */
		public void onTabSelected(Tab tab, FragmentTransaction ft) {
			/* 获取Tab的标志 */
			int tag = Integer.parseInt(tab.getTag().toString());

			/**
			 * 注:这里不能使用addToBackStake方法和commit方法否则会出错
			 */
			switch (tag) {

			case 1:

				ft.replace(R.id.main, new FragmentA(), "fragment1");
				break;

			case 2:
				ft.replace(R.id.main, new FragmentB(), "fragment2");
				break;

			case 3:
				ft.replace(R.id.main, new FragmentC(), "fragment3");
				break;

			default:
				break;
			}

		}

		@Override
		public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
			// TODO Auto-generated method stub

		}

		@Override
		public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
			// TODO Auto-generated method stub

		}

		@Override
		public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
			// TODO Auto-generated method stub

		}

	}

	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

FragmentA.java代码:

public class FragmentA extends Fragment {

	public FragmentA() {
		// TODO Auto-generated constructor stub
	}

	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		View view = inflater.inflate(R.layout.f1, null);
		return view;
	}

	@Override
	public void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
	}

}

FragmentB.java、FragmentC.java的代码与FragmentA基本相同!

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

</RelativeLayout>

f1.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

f2.xml、f3.xml的代码和f1.xml代码基本相同。

抱歉!评论已关闭.