• Android 一个Activity 里面放置多个 Fragment 实现点击切换的Tab 页面效果


    
    
     // BaseActivity 是实现的一些公共的变量和方法,可以暂时为空的类

    public class HomeActivity extends BaseActivity implements View.OnClickListener {
       
    // 下面的四个按钮
    private TextView mHomeView; private TextView mPondView; private TextView mMessageView; private TextView mMineView;
    // 相对布局的 layout 里面装着2个textView 分别放着 图标和文字
    private RelativeLayout mHomeLayout; private RelativeLayout mPondLayout; private RelativeLayout mMessageLayout; private RelativeLayout mMineLayout; // 声明fragmentManager 和四个fragment 以及当前的fragment private FragmentManager fm; private HomeFragment mHomeFragment; private Fragment mCommonFragmentOne; private MessageFragment mMessageFragment; private MineFragment mMineFragment; private Fragment mCurrent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home_layout);
       // 初始化控件变量 initView();
    // 创建首页的Fragment mHomeFragment
    = new HomeFragment();
    // 得到fragment 管理器,Activity 基类里面定义的 fm
    = getFragmentManager();
    FragmentTransaction fragmentTransaction
    = fm.beginTransaction();
    // 使用homeFragment 替换 content_layout 布局 fragmentTransaction.replace(R.id.content_layout, mHomeFragment); fragmentTransaction.commit(); }
    private void initView() {
    // 先初始化layout 并赋值其点击的方法 mHomeLayout
    = (RelativeLayout) findViewById(R.id.home_layout_view); mHomeLayout.setOnClickListener(this); mPondLayout = (RelativeLayout) findViewById(R.id.pond_layout_view); mPondLayout.setOnClickListener(this); mMessageLayout = (RelativeLayout) findViewById(R.id.message_layout_view); mMessageLayout.setOnClickListener(this); mMineLayout = (RelativeLayout) findViewById(R.id.mine_layout_view); mMineLayout.setOnClickListener(this);
    // 再初始化里面的textView 因为点击的时候要给textView的背景换一张图片
    // 注意这里面用了一个空的TextView,背景是一个图标,点击时换的就是这个图标 mHomeView
    = (TextView) findViewById(R.id.home_image_view); mPondView = (TextView) findViewById(R.id.fish_image_view); mMessageView = (TextView) findViewById(R.id.message_image_view); mMineView = (TextView) findViewById(R.id.mine_image_view); mHomeView.setBackgroundResource(R.drawable.comui_tab_home_selected); }
    // 使用 fragmentTransaction 隐藏fragment
    private void hideFragment(Fragment fragment, FragmentTransaction ft) { if (fragment != null) { ft.hide(fragment); } } @Override public void onClick(View v) { FragmentTransaction fragmentTransaction = fm.beginTransaction(); switch (v.getId()) { case R.id.home_layout_view: // 非必须,可以删除掉
    changeStatusBarColor(R.color.color_fed952);
    // 更改背景图片 mHomeView.setBackgroundResource(R.drawable.comui_tab_home_selected); mPondView.setBackgroundResource(R.drawable.comui_tab_pond); mMessageView.setBackgroundResource(R.drawable.comui_tab_message); mMineView.setBackgroundResource(R.drawable.comui_tab_person); // 隐藏其他fragment hideFragment(mCommonFragmentOne, fragmentTransaction); hideFragment(mMessageFragment, fragmentTransaction); hideFragment(mMineFragment, fragmentTransaction);
    if (mHomeFragment == null) {
    //添加一个新的fragment mHomeFragment
    = new HomeFragment(); fragmentTransaction.add(R.id.content_layout, mHomeFragment); } else {
    // 显示当前fragment mCurrent
    = mHomeFragment; fragmentTransaction.show(mHomeFragment); } break; case R.id.message_layout_view: changeStatusBarColor(R.color.color_e3e3e3); mMessageView.setBackgroundResource(R.drawable.comui_tab_message_selected); mHomeView.setBackgroundResource(R.drawable.comui_tab_home); mPondView.setBackgroundResource(R.drawable.comui_tab_pond); mMineView.setBackgroundResource(R.drawable.comui_tab_person); hideFragment(mCommonFragmentOne, fragmentTransaction); hideFragment(mHomeFragment, fragmentTransaction); hideFragment(mMineFragment, fragmentTransaction); if (mMessageFragment == null) { mMessageFragment = new MessageFragment(); fragmentTransaction.add(R.id.content_layout, mMessageFragment); } else { mCurrent = mMessageFragment; fragmentTransaction.show(mMessageFragment); } break; case R.id.mine_layout_view: changeStatusBarColor(R.color.color_00ffffff); mMineView.setBackgroundResource(R.drawable.comui_tab_person_selected); mHomeView.setBackgroundResource(R.drawable.comui_tab_home); mPondView.setBackgroundResource(R.drawable.comui_tab_pond); mMessageView.setBackgroundResource(R.drawable.comui_tab_message); hideFragment(mCommonFragmentOne, fragmentTransaction); hideFragment(mMessageFragment, fragmentTransaction); hideFragment(mHomeFragment, fragmentTransaction); if (mMineFragment == null) { mMineFragment = new MineFragment(); fragmentTransaction.add(R.id.content_layout, mMineFragment); } else { mCurrent = mMineFragment; fragmentTransaction.show(mMineFragment); } break; } fragmentTransaction.commit(); } }
  • 相关阅读:
    输入流输出流
    WIN32_FIND_DATA
    typeid
    为什么要内存对齐 Data alignment: Straighten up and fly right
    fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h
    memcmp
    DPI
    英寸、 Picas、 点、 跨度和 Twips 之间的关系
    如何解决 “fatal error C1083: ”无法打开包括文件
    hdoj 1269迷宫城堡解题报告
  • 原文地址:https://www.cnblogs.com/oftenlin/p/7223484.html
Copyright © 2020-2023  润新知