Fragment简单介绍及其类似与tabhost的底部实现例子

Android Fragment应用实战,使用碎片向ActivityGroup说再见_setting layout 那么话说回来,这种效果到底是如何的呢?现在Fragment的应用真的是越来越广泛了,之前Android在3.0版本加入Fragment的时候,主要是为了解决Android Pad屏幕比较大,空间不能充分利用的问题,但现在即使只是在手机上,也有很多的场景可以运用到Fragment了,今天我们就来学习其中一个特别棒的应用技巧。这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。 阅读详情

Fragment是activity的界面中的一部分或一种行为。你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragment。你可以把Fragment认为模块化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除。

 

Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响。例如:当activity暂停时,它拥有的所有的Fragment们都暂停了,当activity销毁时,它拥有的所有Fragment们都被销毁。然而,当activity运行时(在onResume()之后,onPause()之前),你可以单独地操作每个Fragment,比如添加或删除它们。当你在执行上述针对Fragment的事务时,你可以将事务添加到一个棧中,这个栈被activity管理,栈中的每一条都是一个Fragment的一次事务。有了这个栈,就可以反向执行Fragment的事务,这样就可以在Fragment级支持“返回”键(向后导航)。 


当向activity中添加一个Fragment时,它须置于ViewGroup控件中,并且需定义Fragment自己的界面。你可以在layoutxml文件中声明Fragment,元素为:<fragment>;也可以在代码中创建Fragment,然后把它加入到ViewGroup控件中。然而,Fragment不一定非要放在activity的界面中,它可以隐藏在后台为actvitiy工作。 

本章描述如何使用fragment,包括fragment在加入activity的后退棧中时如何保持自己的状态,如何与activity以及其它fragment们共享事件,如何显示在activity的动作栏等。


形象的说就是Activity是窗,而Fragment就是玻璃。我们可以把窗换不同种类的玻璃,只要窗框不被损坏,玻璃就可以有它的状态,要是窗的框破损了,那玻璃就没有了承载它的物品。它的各种状态就无法展现。当然这都是我自己的理解,要是不好的话希望也帮我纠正一下。

下面举个例子吧!


这是其中的一个Fragment,其它三个都是一样的布局也是一下样 下面我都只写其中的一个

public class Fragment2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
		Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	return inflater.inflate(R.layout.fragment2, null);
}
}

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView 
        android:gravity="center_vertical|center_horizontal"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:text="美丽山原"/>

</LinearLayout>

接下来就是主要的Activity了:

public class MainActivity extends Activity implements OnClickListener{
//private LinearLayout content;
private TextView b1,b2,b3,b4;
private FragmentManager fm;
private FragmentTransaction ft;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		b1 = (TextView) findViewById(R.id.tab1);
		b2 = (TextView) findViewById(R.id.tab2);
		b3 = (TextView) findViewById(R.id.tab3);
		b4 = (TextView) findViewById(R.id.tab4);
		b1.setOnClickListener(this);
		b2.setOnClickListener(this);
		b3.setOnClickListener(this);
		b4.setOnClickListener(this);
	}
@Override
public void onClick(View v) {
	fm=getFragmentManager();
	 ft = fm.beginTransaction();
switch (v.getId()) {
case R.id.tab1:
	ft.replace(R.id.content, new Fragment1());
	break;
case R.id.tab2:
	ft.replace(R.id.content, new Fragment2());
	break;
case R.id.tab3:
	ft.replace(R.id.content, new Fragment3());
	break;
case R.id.tab4:
	ft.replace(R.id.content, new Fragment4());
	break;

default:
	break;
}
	ft.commit();
}

	

}

当你替换了Fragment时候  别忘了commit一下。

最后看下布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/linear"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/tab1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical|center_horizontal"
            android:text="天气预报" />

        <TextView
            android:id="@+id/tab2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical|center_horizontal"
            android:text="每天一笑" />

        <TextView
            android:id="@+id/tab3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical|center_horizontal"
            android:text="开心一天" />

        <TextView
            android:id="@+id/tab4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical|center_horizontal"
            android:text="大家开心" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/linear"
        android:orientation="vertical" />

</RelativeLayout>

最后看一下结果图:




Android底部TabHost+ViewPager滑动切换页面实战(含源码) 有时需在页面创建/销毁时执行额外逻辑,可覆写相关方法:@Override@Override此类扩展可用于埋点统计、资源释放监控等高级用途。在现代Android应用界面设计中,底部标签栏不仅是功能导航的核心组件,更是用户体验和品牌视觉表达的重要载体。原生TabHost虽然提供了基础的标签切换能力,但其默认样式陈旧、交互单一,难以满足当前对美观性与个性化的需求。因此,自定义Tab指示器成为提升UI质感的关键步骤。 阅读详情

相关推荐

ViewPager与TabHost结合实现动态页面滑动

ViewPager是Android开发中一个重要的UI组件,它允许用户通过滑动手势在多个页面间进行切换。它通常被用在引导页、图片浏览、轮播图等场景中,为用户提供了流畅的视觉体验。ViewPager组件本身不具备自动滑动的功能,而是通过适配器模式与其他视图或片段(Fragment)配合使用,以实现复杂的页面切换逻辑。TabHost是Android平台中用于实现标签页导航界面的一种组件。

weixin_42627459的博客 785

Android fragment 内部嵌套tabhost组件

五月就这样过去了。 月末上点干货

Singleton1900的专栏 8269

高通9008模式隐藏技巧:不拆机用ADB命令+Diag协议进入EDL

本文深入解析高通EDL模式(紧急下载模式)的技术原理与实战应用,详细介绍了通过ADB命令和Diag协议无需拆机进入EDL的方法。涵盖硬件/软件触发方案、跨平台工具配置、Firehose协议解析及设备救砖流程,为开发者提供从基础到进阶的完整指南。

weixin_29191761的博客 1125

Android实现底部导航菜单的跳转--BottomNavigationView

效果: 项目结构: 代码: activity_main.xml <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to...

0 4114

kemeas算法继续优化——elkan kmeas算法

题记:又是凌晨3点的夜 elkan kmeans算法 在我的上一篇博客《kmeans算法性能改进_kmeans++算法+kmeans++优化算法+距离计算优化》中,在一般kmeans算法的基础上,添加了对于初始条件和距离计算更上的一些优化技巧。这篇博客聊一聊elkan算法,其实也是对于kmeans运行速度的优化算法。主要作用与kmeans的距离计算过程。 原理 假如我们已经知道任意两个样本之间的距离,再假设我们已经知道了样本1与聚类中心1之间的距离,根据三角性两边之和大于第三边,c+d>a,所以如果

铁血军的小博客 7065

香橙派OPi 6系列选型指南:RK3588与RK3588S开发板深度对比

开发板选型是嵌入式系统设计的关键环节,尤其在边缘计算和AI推理等场景中,芯片的差异直接影响硬件架构。瑞芯微RK3588及其精简版RK3588S是当前高端开发板的核心方案,两者在PCIe通道、显示输出和SATA支持上存在显著区别。理解这些原理,有助于工程师根据项目需求快速匹配产品。香橙派OPi 6系列基于这两款芯片,衍生出OPi 6、OPi 6 Pro与OPi 6 Max三种形态:紧凑型适合嵌入式门禁与AI盒子,Pro版凭借双屏异显和PCIe 3.0满足收银机与视频分析,Max的双2.5G网口和大内存则面向轻

weixin_29185167的博客 226

Android 中TabHost子选项卡里实现Activity跳转而选项卡不消失

j建设中……   背景:TabHost子选项卡里Activity A跳转到Activity B后,选项卡消失;   1.以下链接已参考实现,很方便,但是出现 bug,Activity B中导入联系人电话和点击选择框都会出现异常:   http://hkp.iteye.com/blog/1185482   2. 将不同的activity合在一个activity中,用控制显示的方式来实

berber78的专栏 1万+

全国30米分辨率逐年植被覆盖度(FVC)数据集

植被覆盖度是描述地表植被的重要参数与生态环境的基本指标,在大气圈、土壤圈、水圈和生物圈中都占据着重要的地位,区域及全球范围的植被覆盖度估算对植被及相关领域的研究具有重要意义。分别对LANDSAT 5/7/8系列数据计算FVC,其中Landsat5 和Landsat 7NDVI计算利用 B4和B3波段,Landsat8 和Landsat9 NDVI计算利用 B5和B4波段。算法从当年所有观测数据中,以低云、低探测角度和最高NDVI值为标准,选择最佳的可用像元值,并进行换算。(3) FVC的计算。

地球资源数据云的官方博客 1808

Fragment 与 Activity之间的完美跳转——Navigation为例

以Navigation为例介绍Fragment 跳转到指定Fragment ,Fragment 与Activity之间的跳转。 亲测replace()方法不好使,会出现叠影。 1 多个 Fragment 共用一个Activity 1.1 Activity中加载指定 Fragment(跳转到指定Fragment) 在Navigation布局文件中配置 标签: 从nav_home跳转到nav_add...

没有胡子的猫Asimov 4219

银河麒麟V10离线安装VLC播放器:依赖处理与3.0.9.2版本实操指南

在国产化操作系统日益普及的背景下,软件安装方式成为政企内网用户关注的重点。离线安装作为一种不依赖公网源的部署手段,常用于解决内网环境下的软件获取问题。其核心在于理解Linux包管理机制,如dpkg与apt对依赖关系的处理逻辑。掌握这一原理,不仅能应对多媒体软件的部署,也能提升系统维护效率。VLC作为跨平台多媒体播放器,凭借强大的解码能力与协议支持,广泛应用于本地视频播放、RTSP拉流及监控大屏等场景。本文从离线安装的通用概念出发,结合银河麒麟V10桌面版的实际环境,详细梳理了VLC 3.0.9.2离线包的获

weixin_32247165的博客 369

手把手教你学Simulink——光伏储能系统双向DC-AC逆变器恒功率控制(PQ控制)仿真

本文详细介绍了光伏储能系统中双向DC-AC逆变器的恒功率控制(PQ控制)仿真方法。主要内容包括:1)PQ控制原理及其在光伏满发和储能充放电中的应用;2)系统架构设计,重点推导了功率到dq电流的数学映射关系及电流内环控制算法;3)Simulink建模步骤,涵盖功率电路搭建、PLL设计、电流参考转换等关键环节;4)仿真结果分析,验证了系统在10kW光伏满发和-5kW储能充电模式下的稳态精度和动态切换性能;5)工程实践建议,包括数字控制延迟补偿、低电压穿越处理等实际问题解决方案。该指南为新能源并网系统的功率精准控

MHD0815的博客 425

真正解决Activity由继承FragmentActivity转成AppCompatActivity,底部导航栏被虚拟按键遮挡问题

https://www.zhihu.com/question/35292413

muscle_sunny的博客 2625

汽车UDS诊断详解及Vector相关工具链使用说明——总述

1.什么是诊断 车辆在运行过程中,不可避免地会发生一些故障,为了确保行车安全,我们要求车上的ECU能够实时监测部件的运行状态,一旦发现异常情况,能通过点亮报警灯等方式提示驾驶员。但是,点亮报警灯只能告诉驾驶员车辆发生了故障,最多只能定位到故障ECU,比如ABS报警灯亮说明ABS系统出现故障,但具体是什么部件发生故障并不能通过报警灯显示出来。这时就需要ECU在本地存储一个与故障相对应的故障代码,在进行维修的时候,可以通过车上的OBD接口连接诊断仪,把这个存储的故障代码读取出来,从而进一步定位到更加具体的故障部

weixin_42967006的博客 2万+

Android之底部導航欄--RadioGroup、TabHost、Fragment

Android底部導航欄,使用Fragment實現 老規矩,先看效果圖,因為不想拿4.1操作系統的手機,直接就用模擬器了 然後目錄結構 佈局文件內容 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" and

Francis-ChinaFeng 3134

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android tabhost fragment,FragmentTabHost + Fragment 实现底部菜单

一、实现效果图一利用FragmentTabHost实现底部菜单,在该底部菜单中,包括了5个TabSpec,每个TabSpec中包含了一个View,而View中包含了一个ImageView和一个TextView。而要在TabSpec中显示这个View,就需要同过indicator来设置,eg:TabSpec.setIndicator(view);二、动手实现1、首先什么都不用说,先将准备好的5个Ta...

weixin_31831459的博客 364

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

使用选项卡TabWidget与TabHost实现底部或者顶部四个分类按钮 点击切换对应的fragment

首先作为一名菜鸟,尤其是记忆不好菜鸟,主动手写笔记记忆一些东西还是很有必要的,至少对于我而言。 言归正传,首先当大家看到这个需求,会想到布局中的选项卡控件,TabHost与TabWidget,其中这两个的区别,我的理解就是TabHost是装有选项卡+选项卡内容(FrameLayout)的容器,而TabWidget则就是底部或者顶部的那四个按钮。 再说布局中的注意事项的时候首先我们先看下布局,我

zhangcainiao007的博客 2049

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

android viewpager 底部tabhost,TabHost+ViewPager实现底部导航效果

一:摘要这篇文章主要为大家介绍了使用ViewPager+TabHost实现底部导航效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。下面我们先来看一下要实现的效果吧!二:具体实现过程1.新建一个project,把主布局改为TabHost,id为tab_host2.主布局添加一个相对布局,相对布局里加一个id为view_pager的 ViewPager布局。加一个id为@android:id/...

weixin_35830006的博客 575

仿微信底部Tab切换,TabHost+Fragment的用法

今天没什么事情,所以研究了一下,微信的Tab效果。效果比较粗糙,朋友们先凑合着看,后面有时间会优化。             基本就是点击下面的tab,就会切换到不同的fragment。      main_activity.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xm

Langxingtianxi的专栏 1875

Android TabHost +Fragment 实现底部菜单栏

待完成。。。

Ricky 6165

Android学习—Fragment的简单使用,并实现TabHost

最近学习了android开发中的Fragment,小编在这里将Fragment的使用方法和利用Fragment实现TabHost的步骤分享给大家 文字较少,并非长篇大论,还请大家认真阅读,若文中表述不当,还请大家给予批评和指导。 Fragment,翻译为“碎片”、“片段”。在整个安卓的学习中,Fragment作为一个相当重要的基础概念,它起到了以下几点作用 降低代码耦合度,替Activity...

Harrmison的学习轨迹 576

使用Fragment实现tabhost效果

转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/13171191 现在Fragment的应用真的是越来越广泛了,之前Android在3.0版本加入Fragment的时候,主要是为了解决Android Pad屏幕比较大,空间不能充分利用的问题,但现在即使只是在手机上,也有很多的场景可以运用到Fragment了,今天我们就来学习其

wa991830558的专栏 1万+

Android Fragment应用实战,使用碎片向ActivityGroup说再见

现在Fragment的应用真的是越来越广泛了,之前Android的3.0版本加入Fragment的时候,主要是为了解决Android Pad屏幕比较大,空间不能充分利用的问题,但现在即使只是在手机上,也有很多的场景可以运用到Fragment了,今天我们就来学习其中一个特别棒的应用技巧。 很多手机应用都会有一个非常类似的功能,即屏幕的下方显示一行Tab标签选项,点击不同的标签就可以切换到不同的界面,如以下几个应用所示: 上面三个应用从左到右分别是QQ、新浪微博和支付宝钱宝,可见,这种底部标签式的布局策略真的非

郭霖的专栏 14万+

android viewpager 底部tabhost,FragmentTabHost+ViewPager实现底部导航栏

首先使用FragmentTabHost实现底部菜单栏。content_act_main.xmlxmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height...

weixin_30162121的博客 270

使用fragmentTableHost实现底部菜单栏

1底部菜单的几种实现方式: TabHost+Activity RadioButton+Fragment 这种方法使用RadioGroup来实现RadioButton的互斥选择,而且需要在activity中实现和判断点击事件 FragmentTableHost+Fragment 这个就比较简单了,只需要在layout文件中定义fragmentTableHost(需要support v4包)

hypocrite 3902

ViewPager+Fragment实现TabHost

主要简单介绍一下TabHost几种实现方式 一、Android自带APi两种  使用Android 自带API实现TabHost方法:继承TabAcitivity和不继承该类两种方法:具体实现参考http://blog.youkuaiyun.com/harvic880925/article/details/17120325 二、其他组合方法:    1 单独使用ViewPa

a314773862的博客 582
上一篇: Android判断网络状态
下一篇: 实现实现基于Android的英文电子词典修改原先bug
谁是谁的学渣
博客等级 码龄13年 21粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值