// 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 以及当前的fragmentprivate FragmentManager fm;private HomeFragment mHomeFragment;private Fragment mCommonFragmentOne;private MessageFragment mMessageFragment;private MineFragment mMineFragment;private Fragment mCurrent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_home_layout);       // 初始化控件变量initView();        // 创建首页的FragmentmHomeFragment = 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 隐藏fragmentprivate void hideFragment(Fragment fragment, FragmentTransaction ft) {if (fragment != null) {ft.hide(fragment);}}@Overridepublic 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);// 隐藏其他fragmenthideFragment(mCommonFragmentOne, fragmentTransaction);hideFragment(mMessageFragment, fragmentTransaction);hideFragment(mMineFragment, fragmentTransaction);if (mHomeFragment == null) {                    //添加一个新的fragmentmHomeFragment = new HomeFragment();fragmentTransaction.add(R.id.content_layout, mHomeFragment);} else {                   // 显示当前fragmentmCurrent = 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();}
}

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

  1. android 一个activity定时更新另一个activity的UI

    在开发软件的过程中,客户提出了一个要求,就是在Mainactivity的一个按键button按下之后进入另一个OtherActivity,在这个OtherActivity完成了功能之后,按键butto ...

  2. Android一个Activity多个Handler时,Message消息是否会混乱?

    如果一个Activity有多个handler时候,handler1发送的消息是否会被handler2接收,同理handler2发送的消息是否会被handler1接收? 答案是:不会,一句话谁发送的消息 ...

  3. Android 一个activity 加载一个Fragment

    这个方法也是很简单,代码如下 2中方法一种方法分开写的,另外一种方法是链表的形式. public class SingleActivity extends AppCompatActivity {pri ...

  4. android 多个fragment切换,一个Activity中多个Fragment的切换

    经常会遇到在一个activity界面上布局多个fragment,但是如何从一个fragment跳转到另一个fragment呢?今天在做项目中恰好遇到这样的问题,点击首页fragment的更多店铺,会切 ...

  5. Android学习笔记(十一)——将Fragment添加到Activity中以及参数传递

    将Fragment添加到Activity中 Fragment的布局文件 <LinearLayout xmlns:android="http://schemas.android.com/ ...

  6. Android筑基——Activity的启动过程之同进程在一个Activity中启动另一个Activity(基于api21)

    目录 1. 前言 2. 正文 2.1 Activity类的startActivity()方法 2.2 Instrumentation类的execStartActivity()方法 2.3 Activi ...

  7. android fragmentactivity fragment,Android:Activity与Fragment通信(99%)完美解决方案

    前言 最近一直在想着能否有一种更好的方案来解决:Android中Activity与Fragment之间通信的问题,什么叫更好呢,就是能让Fragment的复用性高,性能还有好(不用反射),代码还要好维 ...

  8. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity

    原文地址:http://android.xsoftlab.net/training/basics/firstapp/starting-activity.html#CreateActivity 在完成了 ...

  9. Android中调用另一个Activity并返回结果-以模拟选择头像功能为例

    场景 Android中点击按钮启动另一个Activity以及Activity之间传值: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...

最新文章

  1. 一款NPN三极管测量: BC547C
  2. hive执行流程(3)-Driver类分析1Driver类整体流程
  3. linux几种常见的Shell:sh、bash、csh、tcsh、ash
  4. 强制Tomcat通过SLF4J / Logback登录
  5. 前端学习(2308):react之子传父
  6. 纯JPA 入门小案例(2)
  7. MySQL 高级 —— 复合索引简介(多列索引)
  8. 如何收割流量红利?UB Store的直播电商“三宝”
  9. MATLAB求二阶隐函数导数,matlab隐函数求导
  10. python程序打印出10行的杨辉三角_GitHub 标星 6.5w+,Python 小白 100 天学习计划,从新手到玩转!...
  11. nexus6 android 6.0 root,KingRoot国内首个攻破Nexus6 支持超万款手机一键Root
  12. python实现简易万年历_Python编程——万年历
  13. Ubuntu环境下制作win7-U盘引导盘
  14. 计算机无线网络拓扑图试题,无线局域网期末复习试题库.doc
  15. 异军突起!当贝投影加冕中国家用投影仪增长之王!
  16. 多线程基础(四)之死锁
  17. android虹软人脸识别代码混淆,虹软人脸识别Android Sample Code
  18. 11.0592 M晶振
  19. 一款能统计能存储日志设置超时时间的ping工具
  20. 打印机批量扫描显示服务器超时,惠普打印机常见故障及解决方法,27年打印故障经验总结...

热门文章

  1. RadioButtonList Enabled=false 文字背景
  2. oracle inside(4)
  3. RSA不下载批次的问题
  4. 用EnumProcesses()枚举进程
  5. Docker容器的简单操作及应用部署
  6. 服务器主板稳定,服务器主板
  7. tomcat安装启动配置
  8. php 查询键名是否存在,PHP array_key_exists():检测键名是否位于数组中
  9. c盘java文件误删_C盘爆满怎么办,教你有选择性删除文件,恢复空间
  10. linux需要的GLIBCXX版本,linux-如果我已经安装了GLIBCXX_4.1.2,则需要GLIBCXX_3.4.9吗?