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 以及当前的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 页面效果相关推荐
- android 一个activity定时更新另一个activity的UI
在开发软件的过程中,客户提出了一个要求,就是在Mainactivity的一个按键button按下之后进入另一个OtherActivity,在这个OtherActivity完成了功能之后,按键butto ...
- Android一个Activity多个Handler时,Message消息是否会混乱?
如果一个Activity有多个handler时候,handler1发送的消息是否会被handler2接收,同理handler2发送的消息是否会被handler1接收? 答案是:不会,一句话谁发送的消息 ...
- Android 一个activity 加载一个Fragment
这个方法也是很简单,代码如下 2中方法一种方法分开写的,另外一种方法是链表的形式. public class SingleActivity extends AppCompatActivity {pri ...
- android 多个fragment切换,一个Activity中多个Fragment的切换
经常会遇到在一个activity界面上布局多个fragment,但是如何从一个fragment跳转到另一个fragment呢?今天在做项目中恰好遇到这样的问题,点击首页fragment的更多店铺,会切 ...
- Android学习笔记(十一)——将Fragment添加到Activity中以及参数传递
将Fragment添加到Activity中 Fragment的布局文件 <LinearLayout xmlns:android="http://schemas.android.com/ ...
- Android筑基——Activity的启动过程之同进程在一个Activity中启动另一个Activity(基于api21)
目录 1. 前言 2. 正文 2.1 Activity类的startActivity()方法 2.2 Instrumentation类的execStartActivity()方法 2.3 Activi ...
- android fragmentactivity fragment,Android:Activity与Fragment通信(99%)完美解决方案
前言 最近一直在想着能否有一种更好的方案来解决:Android中Activity与Fragment之间通信的问题,什么叫更好呢,就是能让Fragment的复用性高,性能还有好(不用反射),代码还要好维 ...
- Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity
原文地址:http://android.xsoftlab.net/training/basics/firstapp/starting-activity.html#CreateActivity 在完成了 ...
- Android中调用另一个Activity并返回结果-以模拟选择头像功能为例
场景 Android中点击按钮启动另一个Activity以及Activity之间传值: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...
最新文章
- 一款NPN三极管测量: BC547C
- hive执行流程(3)-Driver类分析1Driver类整体流程
- linux几种常见的Shell:sh、bash、csh、tcsh、ash
- 强制Tomcat通过SLF4J / Logback登录
- 前端学习(2308):react之子传父
- 纯JPA 入门小案例(2)
- MySQL 高级 —— 复合索引简介(多列索引)
- 如何收割流量红利?UB Store的直播电商“三宝”
- MATLAB求二阶隐函数导数,matlab隐函数求导
- python程序打印出10行的杨辉三角_GitHub 标星 6.5w+,Python 小白 100 天学习计划,从新手到玩转!...
- nexus6 android 6.0 root,KingRoot国内首个攻破Nexus6 支持超万款手机一键Root
- python实现简易万年历_Python编程——万年历
- Ubuntu环境下制作win7-U盘引导盘
- 计算机无线网络拓扑图试题,无线局域网期末复习试题库.doc
- 异军突起!当贝投影加冕中国家用投影仪增长之王!
- 多线程基础(四)之死锁
- android虹软人脸识别代码混淆,虹软人脸识别Android Sample Code
- 11.0592 M晶振
- 一款能统计能存储日志设置超时时间的ping工具
- 打印机批量扫描显示服务器超时,惠普打印机常见故障及解决方法,27年打印故障经验总结...
热门文章
- RadioButtonList Enabled=false 文字背景
- oracle inside(4)
- RSA不下载批次的问题
- 用EnumProcesses()枚举进程
- Docker容器的简单操作及应用部署
- 服务器主板稳定,服务器主板
- tomcat安装启动配置
- php 查询键名是否存在,PHP array_key_exists():检测键名是否位于数组中
- c盘java文件误删_C盘爆满怎么办,教你有选择性删除文件,恢复空间
- linux需要的GLIBCXX版本,linux-如果我已经安装了GLIBCXX_4.1.2,则需要GLIBCXX_3.4.9吗?