您的位置:首页 > 其它

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();

这样我们就完成了!

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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: