Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android actionBar與Fragment結合使用Demo2

Android actionBar與Fragment結合使用Demo2

編輯:關於Android編程

上一篇文章介紹了ActionBar的使用,這裡介紹ActionBar的另一種使用方法,達到的效果和以前的GroupActivity或TabHost是一樣的,可作為導航來使用。

實現效果圖:

\

源代碼:

\

布局文件:activity_main:





f1.xml(體育新聞對應的布局文件):



    

    


f2.xml(娛樂新聞):



    


f3.xml(軍事新聞):



    


代碼文件:

MainActivity:

package com.fragmentdemo10_actionbar;

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.os.Bundle;

public class MainActivity extends Activity {
	private ActionBar actionBar;
	/**
	 * 設置三個整型常量,分別為0,1,2;分別對應 :運動新聞、娛樂新聞、軍事新聞。
	 */
	private final int SPORTS = 0;
	private final int ENTERTAINMENT = 1;
	private final int MILITARY = 2;

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

		actionBar = getActionBar();
		// 設置ActionBar的導航模式
		actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

		actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
		/**
		 * 添加三個tab,分別為:體育新聞,娛樂新聞,軍事新聞。
		 */
		actionBar.addTab(actionBar.newTab().setText("體育新聞")
				.setIcon(R.drawable.ic_launcher)
				.setTabListener(new MyTabListener()).setTag(SPORTS));
		actionBar.addTab(actionBar.newTab().setText("娛樂新聞")
				.setIcon(R.drawable.ic_launcher)
				.setTabListener(new MyTabListener()).setTag(ENTERTAINMENT));
		actionBar.addTab(actionBar.newTab().setText("軍事新聞")
				.setIcon(R.drawable.ic_launcher)
				.setTabListener(new MyTabListener()).setTag(MILITARY));
	}

	class MyTabListener implements TabListener {

		@Override
		public void onTabSelected(Tab tab, FragmentTransaction ft) {
			switch (Integer.parseInt(tab.getTag().toString())) {
			/**
			 * 對應體育新聞
			 */
			case SPORTS:
				ft.replace(R.id.main, new FragementA());
				break;
			/**
			 * 對應娛樂新聞
			 */
			case ENTERTAINMENT:
				ft.replace(R.id.main, new FragementB());
				break;
			/**
			 * 對應軍事新聞
			 */
			case MILITARY:
				ft.replace(R.id.main, new FragementC());
				break;
			default:
				break;
			}
		}

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

		}

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

		}

	}
}
FragmentA(Tab體育新聞對應的Fragment):
package com.fragmentdemo10_actionbar;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
 * Tab體育新聞對應的Fragment
 *
 */
public class FragementA extends Fragment {
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.f1, null);
		return view;
	}
}
FragmentB(Tab娛樂新聞對應的Fragment):
package com.fragmentdemo10_actionbar;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
 * TAB娛樂新聞對應的Fragment
 *
 */
public class FragementB extends Fragment {
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.f2, null);
		return view;
	}
}
FragmentC(Tab軍事新聞對應的Fragment):
package com.fragmentdemo10_actionbar;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
 * TAB軍事新聞對應的Fragment
 *
 */
public class FragementC extends Fragment {
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.f3, null);
		return view;
	}
}

源代碼下載:

點擊下載源碼

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved