Android中的Fragment使用
概述:
? ? 最近在寫一個(gè)應(yīng)用,要用到Fragment,我對(duì)于這一塊還是有一點(diǎn)陌生,因?yàn)橹耙恢庇玫氖茿ctivity。不過,這幾天我也是各種上網(wǎng)查和問其他人完成了這個(gè)小程序。
? ? 程序的主要功能是在一個(gè)FragmentActivity中添加四個(gè)Fragment,再每個(gè)Fragment中去顯示相應(yīng)的手機(jī)信息。如:手機(jī)當(dāng)前電量、手機(jī)內(nèi)存占用率、獲取手機(jī)上的已安裝的應(yīng)用程序名稱等。
代碼示例:
在FragmentActivity中加載第Fragment的方法是:
基本上我們的FragmentActivity類只是去加載這4個(gè)Fragment,另外三個(gè)Fragment的加載在這里就不綴述了。
獲取手機(jī)電量:
值得一提的是如何獲得手機(jī)的電池電量值。Android其實(shí)沒有直接提供給我們一個(gè)方法去調(diào)用就可以得到電池的電量,它需要去實(shí)現(xiàn)注冊(cè)和接收廣播才能夠?qū)崿F(xiàn)獲得電池的電量。而其實(shí)是當(dāng)手機(jī)的電量改變時(shí),Android系統(tǒng)自身就會(huì)發(fā)出一個(gè)廣播,我們需要實(shí)現(xiàn)一個(gè)接收廣播的程序就可以獲得電池電量的變化了。下面是這個(gè)接收廣播的核心代碼:
public void receiveBarreryBroadcast(){BroadcastReceiver receiveBarrery = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())){// 獲取當(dāng)前電量int current = intent.getExtras().getInt("level");// 獲得總電量int total = intent.getExtras().getInt("scale");// 計(jì)算當(dāng)前電量的比率double barreryDump = (current * 100.0) / total;// 修改第一個(gè)Fragment中的TextView文本信息BarreryFragment.this.state.setText("剩余電量為:" + Math.round(barreryDump) + "%");}}};
注冊(cè)廣播:
// 注冊(cè)電池電量改變的廣播IntentFilter barreryFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);BarreryFragment.this.getActivity().registerReceiver(receiveBarrery, barreryFilter); 其實(shí)注冊(cè)廣播還可以在XML文件中去配置,這里就不再給出,需要的朋友可以去網(wǎng)上去查,都有的。
還有一個(gè)就是如何獲得手機(jī)上已安裝應(yīng)用程序的名稱呢?
這個(gè)倒很簡單,只要幾行代碼就可以實(shí)現(xiàn)了。如下:
PackageManager packageManager = null;List<PackageInfo> packsList = null;int appCount = 0;// 得到本機(jī)上一共有多少個(gè)應(yīng)用程序被安裝packageManager = getActivity().getPackageManager();packsList = packageManager.getInstalledPackages(0);// 得到應(yīng)用程序的數(shù)目appCount = packsList.size();// 循環(huán)添加將單個(gè)的AppInfo對(duì)象到AppInfo隊(duì)列中String[] appName = new String[appCount];for (int i = 0; i < appCount; ++i) {PackageInfo packageInfo = packsList.get(i);// 得到應(yīng)用程序名稱,再賦值給appNameappName[i] = packageInfo.applicationInfo.loadLabel(packageManager).toString();} 大家可以看到上面的代碼中有這樣的一句:
pckMan = getActivity().getPackageManager(); 這個(gè)地方我們用到了一個(gè)getActivity方法,?原因是因?yàn)間etPackageManager這個(gè)方法不能在Fragment中去使用,只能用于Activity。而getActivity這個(gè)方法,就是得到這個(gè)Fragment所以在Activity(FragamentActivity)。
源代碼分享:
本程序源碼分享:點(diǎn)擊打開鏈接
效果圖(這里的電量為0%的原因可能是因?yàn)檫@是在虛擬機(jī)上測(cè)試的結(jié)果,放在真機(jī)上是可行的):
總結(jié)
以上是生活随笔為你收集整理的Android中的Fragment使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何用Service来启动背景音乐
- 下一篇: 利用Handler通信来实时显示系统时间