概述:

最近在写一个应用,要用到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使用相关推荐

  1. Android清空Fragment缓存,如何在Android中清除Fragment Backstack

    如何在Android中清除Fragment Backstack 您好如何清除片段回堆栈正在使用以下逻辑,它不起作用... for(int i = 0; i < mFragmentManager. ...

  2. android中viewpager+fragment,ViewPager和Fragment一篇就够了

    ViewPager显示多Fragment使用问题 前言:每当使用ViewPager时,对于选用什么适配器,缓存多少页面,是否需要懒加载以及Fragment的数据刷新经常会有些疑问,网络上的答案很多,但 ...

  3. Android中使用fragment出现异常,Error inflating class fragment

    异常: 在xml文件中静态引用fragment,出现了以下异常: Caused by: android.view.InflateException: Binary XML file line #9 i ...

  4. Android中ViewPager+Fragment的基本使用

    这几天学习了一下ViewPager+Fragement的基本使用方法并写了个Demo.现将代码和效果图放上. 首先是布局文件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  5. Android中的Fragment

    文章目录 1 Fragment简介 1.1 设计思想 1.2 Fragment和Activity的区别 2 Fragment的生命周期 3 Fragment的静态加载和动态加载 3.1 Fragmen ...

  6. Android fragmnet标签,在Android中为Fragment添加标签?

    我试图在Fragment中添加一个TabHost.代码如下.这里里面的Fragment.我试图添加TabHost显示两个标签: package com.nordicsoft.dilosysNewVer ...

  7. android中viewpager+fragment,Android开发之ViewPager+Fragment

    使用步骤 1.Activity的布局文件 android:id="@+id/viewpager" android:layout_width="wrap_content&q ...

  8. 老式Android中碎片Fragment之间的跳转和数据传递

    随着jetpack组件的使用,fragment之间的跳转和传值已经有相应的demo了.但是有时候难免不用Navigation,或者一些老项目的维护.这里,简单记录下老式fragment怎么跳转和传值. ...

  9. 三个activity之间跳转 数据传递_第二百四十二回:Android中Fragment之间的数据传递概述...

    各位看官们大家好,上一回中咱们说的是Android中Activity之间数据传递的例子,这一回咱们说的例子是Fragment之间的数据传递.闲话休提,言归正转.让我们一起Talk Android吧! ...

最新文章

  1. 神策数据搬新家,召唤有才新伙伴!
  2. 台式计算机单核与双核,什么是单核cpu、双核cpu 单核cpu和双核cpu的区别是什么...
  3. [2021 CSP-S提高组] 题解(廊桥分配+括号序列+回文+交通规划)
  4. 委婉的拒绝offer
  5. xbox手柄接收器驱动_xbox手柄连接 win10电脑
  6. data fastboot 擦除_fastboot擦除恢复等待设备【专业修复数据】
  7. “我没搞懂元宇宙,但一天能赚9w块”
  8. Html 返回顶部代码及注释说明
  9. PLSQL Developer+instantclient连接Oracle
  10. python实时读取串口数据_串口的数据采集、以及数据的实时显示
  11. 桌面时间的最佳管理者-软媒时间
  12. 目前常见软件保护技术概述
  13. 黑马程序员_Java基础_枚举 和 单例模式实例
  14. html 的header标签和head标签
  15. 17.光照(点光源)
  16. [转载]autorun.inf病毒源代码
  17. 软件测试工程师人才需求量,软件测试工程师:人才缺口超20万 月薪达七八千
  18. 台式计算机如何拆硬盘,台式机如何更换硬盘
  19. mysql定时任务每天凌晨三点钟醒来_linux cron 下的定时执行工具使用技巧
  20. 成语答题赚小程序安装教程

热门文章

  1. [计算机网络 谢希仁] 第一章
  2. 设计模式(二)————观察者模式
  3. [armv9]-Introducing-Arm-Confidential-Compute-Architecture
  4. MongoDB数据库的下载与Python交互
  5. 使用def导出动态链接库(VC6)
  6. ngrok服务器搭建
  7. Python正则表达式之额外补充(7)
  8. 异常分发(内核异常)
  9. 【web安全】Spring boot heapdump获取敏感信息
  10. 003 Android之线性布局与基础控件