6、android應(yīng)用程序組件之二-activity交互及權(quán)限_第1頁
6、android應(yīng)用程序組件之二-activity交互及權(quán)限_第2頁
6、android應(yīng)用程序組件之二-activity交互及權(quán)限_第3頁
6、android應(yīng)用程序組件之二-activity交互及權(quán)限_第4頁
6、android應(yīng)用程序組件之二-activity交互及權(quán)限_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余14頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第六章 應(yīng)用程序組件(二)Activity交互及權(quán)限本章目標(biāo)系統(tǒng)Intent的使用Android組件權(quán)限說明Activity間關(guān)系和交互intent攜帶數(shù)據(jù)Parcelable對(duì)象數(shù)據(jù)startActivityForResultfragment使用系統(tǒng)Activity調(diào)用系統(tǒng)提供的Intent調(diào)用系統(tǒng)Activity使用者只要發(fā)出意圖,就能得到相應(yīng)的回應(yīng)Activity調(diào)用使用startActivity部分的響應(yīng)需要權(quán)限來控制,需要在androidManifest.xml中申明。Intent舉例調(diào)用撥號(hào)程序和音樂選擇器示例一:/撥打電話-調(diào)用撥號(hào)程序Uri uri = Uri.parse(te

2、l: );Intent intent = new Intent(Intent.ACTION_DIAL, uri);startActivity(intent);示例二:/音樂選擇器/它使用了Intent.ACTION_GET_CONTENT 和 MIME 類型來查找支持 audio/* 的所有 Data Picker,允許用戶選擇其中之一Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType(audio/*);/Intent.createChooser:應(yīng)用選擇器,這個(gè)方法創(chuàng)建一個(gè) ACTION_CHOOSER

3、IntentstartActivity(Intent.createChooser(intent, 選擇音樂);申請(qǐng)使用系統(tǒng)權(quán)限程序執(zhí)行需要讀取到安全敏感項(xiàng)必需在 androidmanifest.xml中聲明相關(guān)權(quán)限請(qǐng)求權(quán)限名稱權(quán)限描述接收短信android.permission.RECEIVE_SMS撥打電話android.permission.CALL_PHONE系統(tǒng)啟動(dòng)完畢通知 PLETED讀取聯(lián)系人信息android.permission.READ_CONTACTS修改聯(lián)系人信息android.permission.WRITE_CONTACTSActivity之間交互Intent攜帶數(shù)據(jù)

4、到另一個(gè)ActivitystartActivityForResult方法調(diào)用另外一個(gè)Activity后并返回?cái)?shù)據(jù)示例:Intent攜帶數(shù)據(jù)放置數(shù)據(jù)Intent intent = new Intent();intent.putExtras(),該函數(shù)被N次重載,可攜帶任何類型的數(shù)據(jù)獲取數(shù)據(jù)在上下文環(huán)境中(即Activity) Intent intent = getIntent()intent.getCharSequenceExtras(String name)intent.getBundleExtras清除數(shù)據(jù)removeExtras()傳遞自定義對(duì)象參數(shù)Parcelable接口android提

5、供了一種新的類型:Parcel。本類被用作封裝對(duì)象數(shù)據(jù)的容器,可以用于Intent或IPC傳遞對(duì)象。Parcelable實(shí)現(xiàn)要點(diǎn):需要實(shí)現(xiàn)四個(gè)要點(diǎn)實(shí)現(xiàn)Parchelable接口writeToParcel 方法describeContents方法靜態(tài)的Parcelable.Creator接口示例:startActivityForResult調(diào)用者ActivityFirstA被調(diào)用者ActivitySecondBIntent intent = SecondB.this.getIntent();Bundle bundle = new Bundle();bundle.putCharSequence(v

6、1, data_content);intent.putExtra(bundle_a, bundle);SecondB.this.setResult(0, intent);SecondB.this.finish();Intent intent = new Intent();intent.setClassName(com.great.act, com.great.act.SecondB);intent.putExtra(data, this is a test);startActivityForResult(intent,0);startActivityForResult返回處理protected

7、 void onActivityResult(int requestCode, int resultCode, Intent data) Bundle bundle = data.getBundleExtra(“bundle_a);Log.i(FirstA,bundle.getString(“v1);Log.i(FirstA,(String) data.getCharSequenceExtra(data);super.onActivityResult(requestCode, resultCode, data);調(diào)用者ActivityFirstA*Fragment自從Android 3.0中引

8、入fragments 的概念。目的是為了解決不同屏幕分辯率的動(dòng)態(tài)和靈活UI設(shè)計(jì)。大屏幕如平板小屏幕如手機(jī),平板電腦的設(shè)計(jì)使得其有更多的空間來放更多的UI組件,而多出來的空間存放UI使其會(huì)產(chǎn)生更多的交互,從而誕生了fragments 。fragments 的設(shè)計(jì)不需要你來親自管理view hierarchy(層次結(jié)構(gòu))的復(fù)雜變化,通過將Activity 的布局分散到frament 中,可以在運(yùn)行時(shí)修改activity 的外觀,并且由activity 管理的back stack(回收棧) 中保存些變化。Fragments 設(shè)計(jì)理念在設(shè)計(jì)應(yīng)用時(shí)特別是Android 應(yīng)用 ,有眾多的分辨率要去適應(yīng),而

9、fragments 可以讓你在屏幕不同的屏幕上動(dòng)態(tài)管理UI。例如:通訊應(yīng)用程序(QQ),用戶列表可以在左邊,消息窗口在右邊的設(shè)計(jì)。而在手機(jī)屏幕用戶列表填充屏幕當(dāng)點(diǎn)擊某一用戶時(shí),則彈出對(duì)話窗口的設(shè)計(jì),如下圖:Fragments的生命周期 其中大多數(shù)程序必須使用Fragments 必須實(shí)現(xiàn)的三個(gè)回調(diào)方法分別為:onCreate系統(tǒng)創(chuàng)建Fragments 時(shí)調(diào)用,可做執(zhí)行初始化工作或者當(dāng)程序被暫停或停止時(shí)用來恢復(fù)狀態(tài),跟Activity 中的onCreate相當(dāng)。 onCreateView用于首次繪制用戶界面的回調(diào)方法,必須返回要?jiǎng)?chuàng)建的Fragments 視圖UI。假如你不希望提供Fragments

10、 用戶界面則可以返回NULL。 onPause 當(dāng)用戶離開這個(gè)Fragments 的時(shí)候調(diào)用,這時(shí)你要提交任何應(yīng)該持久的變化,因?yàn)橛脩艨赡懿粫?huì)回來。更多的事件可以參考上圖的生命周期關(guān)系圖。Fragments與ActivityFragment必須是依存與Activity而存在的,因此Activity的生命周期會(huì)直接影響到Fragment的生命周期。官網(wǎng)這張圖很好的說明了兩者生命周期的關(guān)系:可以看到Fragment比Activity多了幾個(gè)額外的生命周期回調(diào)方法:onAttach(Activity)當(dāng)Fragment與Activity發(fā)生關(guān)聯(lián)時(shí)調(diào)用。onCreateView(LayoutInfla

11、ter, ViewGroup,Bundle)創(chuàng)建該Fragment的視圖onActivityCreated(Bundle)當(dāng)Activity的onCreate方法返回時(shí)調(diào)用onDestoryView()與onCreateView相對(duì)應(yīng),當(dāng)該Fragment的視圖被移除時(shí)調(diào)用onDetach()與onAttach相對(duì)應(yīng),當(dāng)Fragment與Activity關(guān)聯(lián)被取消時(shí)調(diào)用注意:除了onCreateView,其他的所有方法如果你重寫了,必須調(diào)用父類對(duì)于該方法的實(shí)現(xiàn)。Fragments 的常用類別DialogFragment對(duì)話框式的Fragments,可以將一個(gè)fragments 對(duì)話框并到act

12、ivity 管理的fragments back stack 中,允許用戶回到一個(gè)前曾摒棄fragments.ListFragments類似于ListActivity 的效果,并且還提供了ListActivity 類似的onListItemCLick和setListAdapter等功能。PreferenceFragments類似于PreferenceActivity .可以創(chuàng)建類似IPAD的設(shè)置界面。 Fragment使用實(shí)現(xiàn)一個(gè)Fragment類將fragment添加到activity在activity的layout文件中聲明fragment(或者FrameLayout)Fragment/Ac

13、tivity交互Fragent中通過getActivity可以找到所在的ActivityActivity中通過getFragmentManager().findFragmentById可以找到相應(yīng)的Fragmentv4中,getSupportFragmentManagerFragmentTransaction的方法FragmentTransaction transaction = fm.benginTransatcion();/開啟一個(gè)事務(wù)transaction.add() 往Activity中添加一個(gè)Fragmenttransaction.remove() 從Activity中移除一個(gè)Fragment,如果被移除的Fragment沒有添加到回退棧(回退棧后面會(huì)詳細(xì)說),這個(gè)Fragment實(shí)例將會(huì)被銷毀。transaction.replace()使用另一個(gè)Fragment替換當(dāng)前的,實(shí)際上就是remove()然后add()的合體Frag

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論