ActionBar+Fragment实现导航条功能
2015-10-25 16:18
197 查看
1,首先我们要有三个带布局Fragment,在这里我们三个分别是 @我的MyFragment.java 订单界面OrderFragment.java 和车票预订TicketsFragment.java
这三个Fragment有他们相对应的布局,并且都是{@link android.support.v4.app.Fragment}包下的。
2,然后我们要有一个avtivity继承FragmentActivity ,然后在这个activity里加上ActionBar
ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
3,给这个bar添加三个标签,格式如下,最后要添加监听事件
bar.addTab( bar.newTab().setText("标签一").setTabListener(listener));
4,这个接口会有三个方法,分别是选中时候调用,没有选中时候调用,重新选中时候调用
5,但是方法里的参数我们是不能使用的,因为我们用到的是support.v4包下面的,这里一定要注意
6,接下来我们就要把actionbar和Fragment进行连接了。首先我们要把这三个Fragment先声明并且实例化
OrderFragment orderFragment = new OrderFragment();
TicketsFragment ticketsFragment = new TicketsFragment();
MyFragment myFragment = new MyFragment();
7,然后我们要写一个内部类来继承TabListener这个接口,类里有两个参数分别是
private FragmentManager manager;
private Fragment f;
//构造方法
MyTabListenerImpl(FragmentManager manager, Fragment ft) {
this.f = ft;
this.manager = manager;
}
8,加载Fragment有两种方法,一种是静态的,还有一种是动态的,在这里我们用的是动态的
在选中标签的方法里
manager.beginTransaction().add(R.id.layoutmain, f).commit();
开始事物 加入一个Fragment,这个id是这个activity的根节点id,最后提交
在未选中的标签方法里我们要把上一个移除
manager.beginTransaction().remove(f).commit();
这样我们就完成了!
这三个Fragment有他们相对应的布局,并且都是{@link android.support.v4.app.Fragment}包下的。
2,然后我们要有一个avtivity继承FragmentActivity ,然后在这个activity里加上ActionBar
ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
3,给这个bar添加三个标签,格式如下,最后要添加监听事件
bar.addTab( bar.newTab().setText("标签一").setTabListener(listener));
4,这个接口会有三个方法,分别是选中时候调用,没有选中时候调用,重新选中时候调用
5,但是方法里的参数我们是不能使用的,因为我们用到的是support.v4包下面的,这里一定要注意
6,接下来我们就要把actionbar和Fragment进行连接了。首先我们要把这三个Fragment先声明并且实例化
OrderFragment orderFragment = new OrderFragment();
TicketsFragment ticketsFragment = new TicketsFragment();
MyFragment myFragment = new MyFragment();
7,然后我们要写一个内部类来继承TabListener这个接口,类里有两个参数分别是
private FragmentManager manager;
private Fragment f;
//构造方法
MyTabListenerImpl(FragmentManager manager, Fragment ft) {
this.f = ft;
this.manager = manager;
}
8,加载Fragment有两种方法,一种是静态的,还有一种是动态的,在这里我们用的是动态的
在选中标签的方法里
manager.beginTransaction().add(R.id.layoutmain, f).commit();
开始事物 加入一个Fragment,这个id是这个activity的根节点id,最后提交
在未选中的标签方法里我们要把上一个移除
manager.beginTransaction().remove(f).commit();
这样我们就完成了!
package com.example.my12306; import android.os.Bundle; import android.app.ActionBar; import android.app.ActionBar.TabListener; import android.app.Activity; import android.app.FragmentTransaction; import android.app.ActionBar.Tab; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentActivity; import android.view.Menu; public class PeopleActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_people); ActionBar bar = getActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //不显示标题 bar.setDisplayShowTitleEnabled(false); //声明并实例化Fragment OrderFragment orderFragment = new OrderFragment(); TicketsFragment ticketsFragment = new TicketsFragment(); MyFragment myFragment = new MyFragment(); bar.addTab(bar .newTab() .setText("车票预订") .setTabListener( new MyTabListenerImpl(getSupportFragmentManager(), ticketsFragment))); bar.addTab(bar .newTab() .setText("订单查询") .setTabListener( new MyTabListenerImpl(getSupportFragmentManager(), orderFragment))); bar.addTab(bar .newTab() .setText("@我的") .setTabListener( new MyTabListenerImpl(getSupportFragmentManager(), myFragment))); } class MyTabListenerImpl implements TabListener { private FragmentManager manager; private Fragment f; MyTabListenerImpl(FragmentManager manager, Fragment ft) { this.f = ft; this.manager = manager; } @Override // 选中标签 public void onTabSelected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub manager.beginTransaction().add(R.id.layoutmain, f).commit(); } @Override // 没有选中标签 public void onTabUnselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub manager.beginTransaction().remove(f).commit(); } @Override // 重新选中标签 public void onTabReselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.people, menu); return true; } }
相关文章推荐
- 中介者(Mediator)模式
- C语言中大小写字母的转化
- NYOJ--289--苹果
- oracle存储过程及触发器简单案例
- 初学swift笔记 枚举(七)
- 搞科研
- asp.net实现识别客户端浏览器或操作系统
- 第一个安卓程序
- leetcode刷题,总结,记录, 备忘 292
- Linux netfilter 学习笔记 之十五 netfilter模块添加一个match
- 为11.2.0.4的rac开启归档
- c++ 连接数据库
- oracle数据库连接
- BTrace使用总结(安装,配置,运行)
- Java基础学习7(三元表达式)
- 数据库用户的建立,表空间的建立,数据的编辑
- QT-利用C++仿制windown自带的记事本程序V1.0
- Java基本类型和引用类型
- Mining Massive Datasets课程笔记(五)聚类算法
- Rundll32.exe原理及使用, 参数传递问题解决方法(可用于批处理中)