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();
这样我们就完成了!
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; } }