zoukankan      html  css  js  c++  java
  • ActionBar+Fragment实现导航条功能

    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;
        }
    
    }
  • 相关阅读:
    go资料
    typescript 装饰器 decorator
    【转】typescript class decorator装饰器
    【转】Best way to get result count before LIMIT was applied
    DirectX11 采样状态对象
    React通过redux-persist持久化数据存储
    禁止网页查看源代码
    css3 动画 -- 加载动画 Loader
    css3 动画 -- 旋转线条 rotate_line
    读书打卡:《微信互联网平民创业》
  • 原文地址:https://www.cnblogs.com/84126858jmz/p/4908932.html
Copyright © 2011-2022 走看看