ActionBar详解(五)--->利用ActionBar结合Fragment实现Tab导航

简介: MainActivity如下: package cc.testsimpleactionbar4;import android.os.Bundle;import android.

MainActivity如下:

package cc.testsimpleactionbar4;

import android.os.Bundle;
import android.app.ActionBar;
import android.app.Activity;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.FragmentTransaction;
/**
 * Demo描述:
 * 利用ActionBar结合Fragment实现Tab导航.
 * 当选中不同的Tab时利用Fragment显示不同的内容
 * 
 * 参考资料:
 * 1 Android疯狂讲义(第二版)
 *   Thank you very much
 *
 */
public class MainActivity extends Activity {
     private ActionBar mActionBar;
     private final static String SELECTED_TAB_INDEX="selected_tab";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		initActionBar();
	}
	
	private void initActionBar(){
		mActionBar=getActionBar();
		//设置导航方式为Tab
		mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
		
		Tab tab1=mActionBar.newTab();
		tab1.setText("第一页");
		tab1.setTabListener(new TabListenerImpl());
		mActionBar.addTab(tab1);
		
		Tab tab2=mActionBar.newTab();
		tab2.setText("第二页");
		tab2.setTabListener(new TabListenerImpl());
		mActionBar.addTab(tab2);
		
		Tab tab3=mActionBar.newTab();
		tab3.setText("第三页");
		tab3.setTabListener(new TabListenerImpl());
		mActionBar.addTab(tab3);
	}
	
	private class TabListenerImpl implements TabListener{
		@Override
		public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
			
		}

		@Override
		public void onTabSelected(Tab tab, FragmentTransaction transaction) {
			System.out.println(" onTabSelected ");
			TestFragment testFragment=new TestFragment();
			Bundle bundle=new Bundle();
			bundle.putString(TestFragment.KEY, "这是第"+(tab.getPosition()+1)+"个Tab");
			testFragment.setArguments(bundle);
			FragmentTransaction fragmentTransaction=getFragmentManager().beginTransaction();
			fragmentTransaction.replace(R.id.relativeLayoutContainer, testFragment);
			fragmentTransaction.commit();
		}

		@Override
		public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
			
		}
		
	}

	//以下处理横竖屏的切换
	
	//将当前选中的Tab页的索引保存到Bundle中
	@Override
	protected void onSaveInstanceState(Bundle bundle) {
		super.onSaveInstanceState(bundle);
		bundle.putInt(SELECTED_TAB_INDEX, mActionBar.getSelectedNavigationIndex());
	}
	
	//获取已经保存的被选中Tab页的索引,且设置ActionBar.
	//setSelectedNavigationItem()方法会调用onTabSelected()
	@Override
	protected void onRestoreInstanceState(Bundle bundle) {
		super.onRestoreInstanceState(bundle);
		mActionBar.setSelectedNavigationItem(bundle.getInt(SELECTED_TAB_INDEX));
	}

}

 

TestFragment如下:

package cc.testsimpleactionbar4;

import android.app.Fragment;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class TestFragment extends Fragment {
	public static final String KEY="key";
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
		TextView textView=new TextView(getActivity());
		textView.setGravity(Gravity.CENTER);
		Bundle bundle=this.getArguments();
		String content=bundle.getString(KEY);
		textView.setText(content);
		textView.setTextSize(30);
		return textView;
	}
}


main.xml如下:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/relativeLayoutContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

</RelativeLayout>



 

相关文章
|
6月前
自定义tablayout中的tab样式
自定义tablayout中的tab样式
27 0
|
存储 Android开发
android ViewPager + Fragment + Tablayout 实现嵌套页面导航(二)
android ViewPager + Fragment + Tablayout 实现嵌套页面导航
android ViewPager + Fragment + Tablayout 实现嵌套页面导航(二)
|
容器
Fragment——底部导航栏的实现
本节开始我们会讲解一些Fragment在实际开发中的一些实例!而本节给大家讲解的是底部导航栏的实现!而基本的底部导航栏方法有很多种,比如全用TextView做,或者用RadioButton,又或者使用TabLayout + RadioButton,当然复杂的情况还是得走外层套布局的方法!本节我们用TextView来做一个底部导航栏的效果,也熟悉下Fragment的使用!
111 0
|
编译器 Android开发 容器
android ViewPager + Fragment + Tablayout 实现嵌套页面导航(一)
android ViewPager + Fragment + Tablayout 实现嵌套页面导航
android ViewPager + Fragment + Tablayout 实现嵌套页面导航(一)
|
数据安全/隐私保护
RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
132 0
RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
在 fragment 中使用 Toolbar 的 menu
在 fragment 中使用 Toolbar 的 menu
|
XML Android开发 数据格式
Android--FragmentTabHost+ViewPager+Fragment实现底部tab菜单栏
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/79001632 activity_main.
1226 0
|
Android开发 容器 数据格式
浅谈TabLayout(ViewPager+Tab联动)
google发布了的Android Support Design库中提供了TabLayout   通过TabLayout+ViewPager实现导航栏效果,点击Tab ,ViewPager跟随变化,滑动ViewPager,Tab跟随变化 看效果图: 通过一个Demo来了解TabLayout的简单使用(Android Studio开发),代码中都有注释了 ,很简单 1、build.
1509 0
|
Android开发
Android判断ListView滚动到最顶部第0条item完全完整可见及最底部最后一条item完全完整可见
Android判断ListView滚动到最顶部第0条item完全完整可见及最底部最后一条item完全完整可见 给Android的ListView增加一个OnScrollListener监听事件:mListView.
1067 0
|
Android开发
使用ViewPager和Fragment实现滑动导航
ViewPage是android-support-v4.jar包提供的用于页面滑动的库,android-support-v4.jar是google推荐使用的一个类库,在项目中使用之前,你必须其添加到项目中(项目点右键Build path->configure build path,然后找到jar进行添加) 1.
1149 0