Android中的Fragment使用
来源:互联网 发布:在淘宝上买黄金可靠吗 编辑:程序博客网 时间:2024/06/08 05:37
概述:
最近在写一个应用,要用到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%的原因可能是因为这是在虚拟机上测试的结果,放在真机上是可行的):
1 0
- Android中的Fragment使用
- Fragment在Android中的使用
- Android中的Fragment使用详解
- Android中的Fragment的使用
- Android 中使用 XML 中的 fragment 心得
- Android中的Fragment使用详解之生命周期
- Android BroadcastReceiver在Fragment中的使用
- Android--app包中的fragment和v4包中的fragment的使用的区别
- Android中的Fragment
- android 中的 ViewPager+ Fragment
- android 中的 ViewPager+ Fragment
- android中的Fragment
- android中的Fragment
- android 中的 ViewPager+ Fragment
- Android中的Fragment
- android 中的 ViewPager+ Fragment
- Android中的Fragment
- android 中的 ViewPager+ Fragment
- 快速排序 and 第K大数
- qemu/kvm/qemu-kvm/virsh的区别(转)
- 【翻译】在Ext JS和Sencha Touch中创建自定义布局
- Linux设备模型--platform
- 安装最简单的DNS服务器
- Android中的Fragment使用
- 算法竞赛入门经典(第2版)习题3-7 DNA序列 DNA Consensus String UVa1368
- adb 命令详解
- 经验总结---编译出可以在Android上执行的可执行文件
- 掌握了写作的性感符号列表的艺术
- C++的未来和指针
- Bridge 设计模式
- 面试算法(十一)打印1到最大的n位数
- 对比Ruby和Python的垃圾回收(2):代式垃圾回收机制