Android 导航条效果实现(五) ActionBar+Fragment

ActionBar(已过时,查看ToolBar)+Fragment实现选项卡的步骤:

    当前窗体Activity类要继承于FragmentActivity,而不是Activity;

    获取ActionBar对象:通过当前上下文对象的getActionBar()方法来实现;

    设置ActionBar对象的导航模式为Tab导航模式;
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    分别创建Tab对象:
        通过ActionBar对象的newTab()方法创建Tab对象;
        通过Tab对象的setText()设置选项卡文字;
        通过Tab对象的setTabListener()设置选项卡监听事件。

    自定义ActionBar.TabListener的监听器;

    为ActionBar对象添加Tab对象。通过ActionBar对象的addTab()方法实现添加选项卡。


参考代码

MainActivity.java

package com.noonecode.actionbartabdemo;

import java.util.ArrayList;
import java.util.List;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

@SuppressWarnings("deprecation")
public class MainActivity extends FragmentActivity {

    private List<Fragment> fragments;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 获取ActionBar
        ActionBar actionBar = getActionBar();
        // ActionBar设置Tab模式
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        // initdata
        fragments = new ArrayList<Fragment>();
        fragments.add(new FragmentRecord());
        fragments.add(new FragmentContacts());
        fragments.add(new FragmentFavor());
        // Tag区分tab
        Tab tab1 = actionBar.newTab().setTag(0).setText("通讯记录").setTabListener(listener);
        Tab tab2 = actionBar.newTab().setTag(1).setText("联系人").setTabListener(listener);
        Tab tab3 = actionBar.newTab().setTag(2).setText("收藏夹").setTabListener(listener);
        actionBar.addTab(tab1);
        actionBar.addTab(tab2);
        actionBar.addTab(tab3);
    }

    private TabListener listener = new TabListener() {

        @Override
        public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
            // 当前tab的tag作为fragments的index下标
            int position = (Integer) tab.getTag();
            // 切换页面
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.fl_container, fragments.get(position));
            fragmentTransaction.commit();
        }

        @Override
        public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
        }

        @Override
        public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
        }
    };
}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62



activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fl_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.noonecode.actionbartabdemo.MainActivity" >
</FrameLayout>

    1
    2
    3
    4
    5
    6
    7

每个Fragment很简单,不再赘述。


示例效果

ActionBar+Fragment


注意

    开始actionBar.setTab(…)方法,默认会触发TabListener的onTabSelected方法选中第一个Tab,这里需要注意一下。
    注意几个Fragment复制的时候,布局不要加载错了。



(完毕)

导航:
Android 导航条效果实现(一) TabActivity+TabHost
http://blog.csdn.net/qq_33425116/article/details/52573967

Android 导航条效果实现(二) FragmentTabHost
http://blog.csdn.net/qq_33425116/article/details/52575811

Android 导航条效果实现(三) ViewPager+PagerTabStrip
http://blog.csdn.net/qq_33425116/article/details/52577570

Android 导航条效果实现(四) ViewPager+自定义导航条
http://blog.csdn.net/qq_33425116/article/details/52584282

Android 导航条效果实现(五) ActionBar+Fragment
http://blog.csdn.net/qq_33425116/article/details/52587635

Android 导航条效果实现(六) TabLayout+ViewPager+Fragment
http://blog.csdn.net/qq_33425116/article/details/52599818
---------------------
作者:chriszht_163
来源:CSDN
原文:https://blog.csdn.net/qq_33425116/article/details/52587635
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-05-27 20:28  天涯海角路  阅读(315)  评论(0)    收藏  举报