actionbar tab的页面切换

1.

package com.bwf.tabs;

import android.os.Bundle;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;
/**
 * 使用ActionBar的Tab进行页面导航切换的基本流程
 *         1. 准备页面,Fragment
 *         2. 获取ActionBar对象
 *         3. 设置导航的模式ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
 *         4. 获取选项卡对象Tab对象
 *         5. 给Tab设置相关的属性比如文字、图片
 *         6. 创建Tab的监听
 *             a. 定义一个类来实现一个接口ActionBar.TabListener
 *             b. 复写接口中的三个回调方法
 *                 选中选项、取消选项、重复选项
 *                 onTabSelected:通常去添加对应页面的Fragment
 *                 onUnselected:通常去里边移除掉之前的Fragment
 *                 onReslected:通常提示选中的选项卡就是当前的选项卡
 *         7. 把选项卡对象Tab设置监听
 *         8. 把选项卡添加到ActionBar中去
 * */
public class MainActivity extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ActionBar ab = getActionBar();
        // 设置为Tab模式
        ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        // 获取3个Tab对象并设置标题
        ActionBar.Tab ab_1 = ab.newTab().setText("蓝色界面");
        ActionBar.Tab ab_2 = ab.newTab().setText("绿色界面");
        ActionBar.Tab ab_3 = ab.newTab().setText("橙色界面");
        // 创建并绑定Fragment
        Frag_01 f1 = new Frag_01();
        Frag_02 f2 = new Frag_02();
        Frag_03 f3 = new Frag_03();
        // 给每个Tab设置监听
        ab_1.setTabListener(new MyListener(f1));
        ab_2.setTabListener(new MyListener(f2));
        ab_3.setTabListener(new MyListener(f3));

        // 默认情况下,Tab出现的顺序和添加的顺序一致,初始选中最先添加的Tab
        // 当然在添加时,可以选择添加的位置
        ab.addTab(ab_1);
        ab.addTab(ab_3);
        ab.addTab(ab_2);

    }

    /**
     * 定义TabListener监听器
     * */
    class MyListener implements ActionBar.TabListener {
        Fragment fragment;

        public MyListener(Fragment fragment) {
            super();
            this.fragment = fragment;
        }

        /**
         * 选中Tab时调用
         *         在此方法中完成Fragment的添加或者切换工作
         * */
        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            ft.add(android.R.id.content, fragment);
            myLog("onTabSelected");
        }

        /**
         * 从选中状态脱离时调用
         *         在此方法中完成移除Fragment的操作
         * */
        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            ft.remove(fragment);
            myLog("onTabUnselected");
        }

        /**
         * 如果Tab已经是选中状态,再次选中时调用
         *         通常会给出已经选中的提示
         * */
        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            myLog("onTabReselected");
            myToast("已经是选中状态了");
        }

    }

    void myLog(String s) {
        Log.d("fanhy", s);
    }

    void myToast(String s) {
        Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();
    }
}

2.其他两个省略

package com.bwf.tabs;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Frag_01 extends Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        return inflater.inflate(R.layout.frag_01, container, false);
    }
}

 

posted on 2015-09-28 17:42  敬的男人  阅读(191)  评论(0)    收藏  举报