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

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>

 

时间: 2024-08-30 14:49:16

ActionBar详解(六)---&gt;利用ActionBar结合Fragment实现下拉式导航的相关文章

ActionBar详解(五)---&amp;gt;利用ActionBar结合Fragment实现Tab导航

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;

Android巧用ActionBar实现下拉式导航_Android

本文实例为大家分享了ActionBar下拉式导航的实现代码,供大家参考,具体内容如下 利用Actionbar同样可以很轻松的实现下拉式的导航方式,若想实现这种效果: 1)actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)  2)setListNavigationCallbacks(SpinnerAdapter adapter,ActionBar.OnNavigationListener callback). 首先是创建一个Fra

Android巧用ActionBar实现下拉式导航

本文实例为大家分享了ActionBar下拉式导航的实现代码,供大家参考,具体内容如下 利用Actionbar同样可以很轻松的实现下拉式的导航方式,若想实现这种效果: 1)actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST) 2)setListNavigationCallbacks(SpinnerAdapter adapter,ActionBar.OnNavigationListener callback). 首先是创建一个Frag

ActionBar详解(二)---&amp;gt;使用ActionBar显示选项菜单

MainActivity如下: package cc.testsimpleactionbar1; import android.os.Bundle; import android.app.Activity; import android.graphics.Color; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast

Masonry自动布局详解六:tableviewCell布局

Masonry自动布局详解六:tableviewCell布局 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万大量代码的冗余,对维护和开发的效率都很低. 笔者在这里介绍纯代码自动布局的第三方库:Masonry.这个库使用率相当高,在全世界都有大量的开发者在使用,其star数量也是相当高的. 支持原创,请阅读原文 效果图 本节详解Masonry的以动画的

【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航

原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解>    系列文章目录导航     --通过知识共享树立个人品牌.           本是成书的,但后来做其他事了,就无偿的贡献出来,被读者夸其目前为止最"实在.经典"的写ORACLE PL/SQL编程的文章-!   觉得对你有帮助,请留言与猛点推荐,谢谢.     [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序

张宏江详解金山转型:三年市值上涨400%下一个爆发点在哪

导语:距离张宏江履任金山软件CEO已经过去了 三年,这是金山向移动互联网断臂转型的三年,也是金山在庞杂业务中去芜存菁.重回创业状态的三年.从2011年2.7港元的低位重回今日20港元的股价,金山这三年都做了什么?下一个三年,金山的爆发点在哪?张宏江详解金山转型:三年市值上涨400% 下一个爆发点在哪9月28日,金山软件(HK:03888)收于18.94港元,市值为224亿港元,比最低位时上涨超过400%.此时距离张宏江履任金山软件CEO以来,已过去了三年.这三年,是老牌巨头陨落.后起之辈云涌的三

利用.net控件实现下拉导航菜单制作的具体方法

这篇文章介绍了利用.net控件实现下拉导航菜单制作的具体方法,有需要的朋友可以参考一下,希望对你有所帮助   今天的一个小测试是老师让用.NET用控件来制作一个拉菜单要求如下: 将鼠标移到父菜单上弹出3个子菜单,而且每个子菜单都有超链接. 以下是我自己做的代码: 复制代码 代码如下:     <asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" Width="10

actionbar详解(二)

经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对较为深刻的理解了.唯一欠缺的是,前面我们都只是学习了理论知识而已,虽然知识点已经掌握了,但是真正投入到项目实战当中时会不会掉链子还很难说.那么不用担心,本篇文章我就将带领大家一起进入ActionBar的应用实战,将理论和实践完美结合到一起. 如果你还没有看过我的前两篇文章,建议先去阅读一下 Android ActionBar完全解析,使用官方推荐的最佳导航栏(上) 和 Android ActionBar完全解析,使用官方推荐的最