Android中的Fragment使用
概述:
最近在写一个应用,要用到Fragment,我对于这一块还是有一点陌生,因为之前一直用的是Activity。不过,这几天我也是各种上网查和问其他人完成了这个小程序。
程序的主要功能是在一个FragmentActivity中添加四个Fragment,再每个Fragment中去显示相应的手机信息。如:手机当前电量、手机内存占用率、获取手机上的已安装的应用程序名称等。
代码示例:
在FragmentActivity中加载第Fragment的方法是:
// 定义一个Fragment管理器FragmentManager fragmentManager = getSupportFragmentManager();// 得到在XML中定义的FragmentFragment barreryFragment = fragmentManager.findFragmentById(R.id.fragment_barrery);// fragmentBarrery是否为空,// 若为空,那就重新加载一个,然后进行一个匹配,// 最后提交if (null == barreryFragment) {barreryFragment = new BarreryFragment();fragmentManager.beginTransaction().add(R.id.fragment_barrery, barreryFragment).commit();}
基本上我们的FragmentActivity类只是去加载这4个Fragment,另外三个Fragment的加载在这里就不缀述了。
获取手机电量:
值得一提的是如何获得手机的电池电量值。Android其实没有直接提供给我们一个方法去调用就可以得到电池的电量,它需要去实现注册和接收广播才能够实现获得电池的电量。而其实是当手机的电量改变时,Android系统自身就会发出一个广播,我们需要实现一个接收广播的程序就可以获得电池电量的变化了。下面是这个接收广播的核心代码:
public void receiveBarreryBroadcast(){BroadcastReceiver receiveBarrery = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())){// 获取当前电量int current = intent.getExtras().getInt("level");// 获得总电量int total = intent.getExtras().getInt("scale");// 计算当前电量的比率double barreryDump = (current * 100.0) / total;// 修改第一个Fragment中的TextView文本信息BarreryFragment.this.state.setText("剩余电量为:" + Math.round(barreryDump) + "%");}}};
注册广播:
// 注册电池电量改变的广播IntentFilter barreryFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);BarreryFragment.this.getActivity().registerReceiver(receiveBarrery, barreryFilter);
其实注册广播还可以在XML文件中去配置,这里就不再给出,需要的朋友可以去网上去查,都有的。
还有一个就是如何获得手机上已安装应用程序的名称呢?
这个倒很简单,只要几行代码就可以实现了。如下:
PackageManager packageManager = null;List<PackageInfo> packsList = null;int appCount = 0;// 得到本机上一共有多少个应用程序被安装packageManager = getActivity().getPackageManager();packsList = packageManager.getInstalledPackages(0);// 得到应用程序的数目appCount = packsList.size();// 循环添加将单个的AppInfo对象到AppInfo队列中String[] appName = new String[appCount];for (int i = 0; i < appCount; ++i) {PackageInfo packageInfo = packsList.get(i);// 得到应用程序名称,再赋值给appNameappName[i] = packageInfo.applicationInfo.loadLabel(packageManager).toString();}
大家可以看到上面的代码中有这样的一句:
pckMan = getActivity().getPackageManager();
这个地方我们用到了一个getActivity方法, 原因是因为getPackageManager这个方法不能在Fragment中去使用,只能用于Activity。而getActivity这个方法,就是得到这个Fragment所以在Activity(FragamentActivity)。
源代码分享:
本程序源码分享:点击打开链接
效果图(这里的电量为0%的原因可能是因为这是在虚拟机上测试的结果,放在真机上是可行的):
Android中的Fragment使用相关推荐
- Android清空Fragment缓存,如何在Android中清除Fragment Backstack
如何在Android中清除Fragment Backstack 您好如何清除片段回堆栈正在使用以下逻辑,它不起作用... for(int i = 0; i < mFragmentManager. ...
- android中viewpager+fragment,ViewPager和Fragment一篇就够了
ViewPager显示多Fragment使用问题 前言:每当使用ViewPager时,对于选用什么适配器,缓存多少页面,是否需要懒加载以及Fragment的数据刷新经常会有些疑问,网络上的答案很多,但 ...
- Android中使用fragment出现异常,Error inflating class fragment
异常: 在xml文件中静态引用fragment,出现了以下异常: Caused by: android.view.InflateException: Binary XML file line #9 i ...
- Android中ViewPager+Fragment的基本使用
这几天学习了一下ViewPager+Fragement的基本使用方法并写了个Demo.现将代码和效果图放上. 首先是布局文件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- Android中的Fragment
文章目录 1 Fragment简介 1.1 设计思想 1.2 Fragment和Activity的区别 2 Fragment的生命周期 3 Fragment的静态加载和动态加载 3.1 Fragmen ...
- Android fragmnet标签,在Android中为Fragment添加标签?
我试图在Fragment中添加一个TabHost.代码如下.这里里面的Fragment.我试图添加TabHost显示两个标签: package com.nordicsoft.dilosysNewVer ...
- android中viewpager+fragment,Android开发之ViewPager+Fragment
使用步骤 1.Activity的布局文件 android:id="@+id/viewpager" android:layout_width="wrap_content&q ...
- 老式Android中碎片Fragment之间的跳转和数据传递
随着jetpack组件的使用,fragment之间的跳转和传值已经有相应的demo了.但是有时候难免不用Navigation,或者一些老项目的维护.这里,简单记录下老式fragment怎么跳转和传值. ...
- 三个activity之间跳转 数据传递_第二百四十二回:Android中Fragment之间的数据传递概述...
各位看官们大家好,上一回中咱们说的是Android中Activity之间数据传递的例子,这一回咱们说的例子是Fragment之间的数据传递.闲话休提,言归正转.让我们一起Talk Android吧! ...
最新文章
- 神策数据搬新家,召唤有才新伙伴!
- 台式计算机单核与双核,什么是单核cpu、双核cpu 单核cpu和双核cpu的区别是什么...
- [2021 CSP-S提高组] 题解(廊桥分配+括号序列+回文+交通规划)
- 委婉的拒绝offer
- xbox手柄接收器驱动_xbox手柄连接 win10电脑
- data fastboot 擦除_fastboot擦除恢复等待设备【专业修复数据】
- “我没搞懂元宇宙,但一天能赚9w块”
- Html 返回顶部代码及注释说明
- PLSQL Developer+instantclient连接Oracle
- python实时读取串口数据_串口的数据采集、以及数据的实时显示
- 桌面时间的最佳管理者-软媒时间
- 目前常见软件保护技术概述
- 黑马程序员_Java基础_枚举 和 单例模式实例
- html 的header标签和head标签
- 17.光照(点光源)
- [转载]autorun.inf病毒源代码
- 软件测试工程师人才需求量,软件测试工程师:人才缺口超20万 月薪达七八千
- 台式计算机如何拆硬盘,台式机如何更换硬盘
- mysql定时任务每天凌晨三点钟醒来_linux cron 下的定时执行工具使用技巧
- 成语答题赚小程序安装教程