ActionBar详解(六)--->利用ActionBar结合Fragment实现下拉式导航

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

MainActivity如下:

package cc.testsimpleactionbar5;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.app.ActionBar;
import android.app.ActionBar.OnNavigationListener;
import android.app.Activity;
import android.app.FragmentTransaction;
/**
 * Demo描述:
 * 利用ActionBar结合Fragment实现下拉式导航.
 * 且根据不同的导航利用Fragment显示不同的内容
 * 
 * 备注说明:
 * 该示例和TestSimpleActionBar4示例的布局文件一致.
 * 代码实现也类似,只是导航方式不同罢了
 * 
 * 参考资料:
 * 1 Android疯狂讲义(第二版)
 *   Thank you very much
 *
 */
public class MainActivity extends Activity {
    private ActionBar mActionBar;
    private final static String SELECTED_PAGE_INDEX="selected_page";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		initActionBar();
	}
	
	private void initActionBar(){
		mActionBar=getActionBar();
		//设置是否显示ActionBar的标题
		mActionBar.setDisplayShowTitleEnabled(true);
		//设置导航方式为LIST
		mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
		
		ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(
							 MainActivity.this,
							 android.R.layout.simple_list_item_1,
							 android.R.id.text1, 
							 new String[]{"第一页","第二页","第三页" });
		//为ActionBar设置ArrayAdapter和导航监听
		mActionBar.setListNavigationCallbacks(arrayAdapter,new NavigationListenerImpl());
		
	}
	
	private class NavigationListenerImpl implements OnNavigationListener{
		@Override
		public boolean onNavigationItemSelected(int position, long id) {
			System.out.println(" onNavigationItemSelected ");
			TestFragment testFragment=new TestFragment();
			Bundle bundle=new Bundle();
			bundle.putString(TestFragment.KEY, "这是第"+(position+1)+"页");
			testFragment.setArguments(bundle);
			FragmentTransaction fragmentTransaction=getFragmentManager().beginTransaction();
			fragmentTransaction.replace(R.id.relativeLayoutContainer, testFragment);
			fragmentTransaction.commit();
			return false;
		}
		
	}
	
	
	// 以下处理横竖屏的切换

	// 将当前选中页的索引保存到Bundle中
	@Override
	protected void onSaveInstanceState(Bundle bundle) {
		super.onSaveInstanceState(bundle);
		bundle.putInt(SELECTED_PAGE_INDEX,mActionBar.getSelectedNavigationIndex());
	}

	// 获取已经保存的被选中页的索引,且设置ActionBar.
	// setSelectedNavigationItem()方法会调用onNavigationItemSelected()
	@Override
	protected void onRestoreInstanceState(Bundle bundle) {
		super.onRestoreInstanceState(bundle);
		mActionBar.setSelectedNavigationItem(bundle.getInt(SELECTED_PAGE_INDEX));
	}
	

}


TestFragment如下:

package cc.testsimpleactionbar5;

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.mxl如下:

<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月前
|
XML Java Android开发
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
648 1
|
容器
Fragment——底部导航栏的实现
本节开始我们会讲解一些Fragment在实际开发中的一些实例!而本节给大家讲解的是底部导航栏的实现!而基本的底部导航栏方法有很多种,比如全用TextView做,或者用RadioButton,又或者使用TabLayout + RadioButton,当然复杂的情况还是得走外层套布局的方法!本节我们用TextView来做一个底部导航栏的效果,也熟悉下Fragment的使用!
111 0
|
XML Java 数据格式
Fragment底部导航栏
一个页面以微信为例,从上到下依次是状态栏,Activity顶部导航栏,Fragment,Activity底部导航栏。 每点击一个底部导航栏都会replace另一个Fragment。
72 0
|
数据安全/隐私保护
RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
132 0
RadioGroup+ViewPager +Fragment 制作APP主界面底部导航和左右滑动
|
Android开发 容器 Java
Android BottomSheet:底部弹出Fragment面板(4)
 Android BottomSheet:底部弹出Fragment面板(4) BottomSheet不仅可以弹出轻量级的定制好的面板(见附录文章5,6,7),还可以弹出“重”的fragment,但是此fragment是BottomSheetFragment。
2120 0
|
Android开发
使用ViewPager和Fragment实现滑动导航
ViewPage是android-support-v4.jar包提供的用于页面滑动的库,android-support-v4.jar是google推荐使用的一个类库,在项目中使用之前,你必须其添加到项目中(项目点右键Build path->configure build path,然后找到jar进行添加) 1.
1149 0
|
Android开发 容器 数据格式
Android ViewPager实现Tabhost选项卡底部滑块动态滑动过渡
 《Android ViewPager实现Tabhost选项卡底部滑块动态滑动过渡》 之前基于github上的第三方开源控件ViewPagerIndicator的UnderlinePageIndicator(原文链接:http://blog.csdn.net/zhangphil/article/details/44752213),自己写了一个底部带有滑块、且当ViewPager页面切换时候选项卡也随之相应切换,且滑块也随之相应动态滑动效果得控件。
1204 0
|
Android开发 容器 数据格式
ViewPager+Fragment实现TabHost,Fragment动态添加、删除,Tab选项卡跟随滑动
效果图: 代码功能: (1)用ViewPager+Fragment实现TabHost,ViewPager的每一个Page均是Fragment。
1596 0