6、android應用程序組件之二-activity交互及權限_第1頁
6、android應用程序組件之二-activity交互及權限_第2頁
6、android應用程序組件之二-activity交互及權限_第3頁
6、android應用程序組件之二-activity交互及權限_第4頁
6、android應用程序組件之二-activity交互及權限_第5頁
免費預覽已結束,剩余14頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第六章 應用程序組件(二)Activity交互及權限本章目標系統Intent的使用Android組件權限說明Activity間關系和交互intent攜帶數據Parcelable對象數據startActivityForResultfragment使用系統Activity調用系統提供的Intent調用系統Activity使用者只要發(fā)出意圖,就能得到相應的回應Activity調用使用startActivity部分的響應需要權限來控制,需要在androidManifest.xml中申明。Intent舉例調用撥號程序和音樂選擇器示例一:/撥打電話-調用撥號程序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:應用選擇器,這個方法創(chuàng)建一個 ACTION_CHOOSER

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

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

5、供了一種新的類型:Parcel。本類被用作封裝對象數據的容器,可以用于Intent或IPC傳遞對象。Parcelable實現要點:需要實現四個要點實現Parchelable接口writeToParcel 方法describeContents方法靜態(tài)的Parcelable.Creator接口示例:startActivityForResult調用者ActivityFirstA被調用者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);調用者ActivityFirstA*Fragment自從Android 3.0中引

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

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

10、 用戶界面則可以返回NULL。 onPause 當用戶離開這個Fragments 的時候調用,這時你要提交任何應該持久的變化,因為用戶可能不會回來。更多的事件可以參考上圖的生命周期關系圖。Fragments與ActivityFragment必須是依存與Activity而存在的,因此Activity的生命周期會直接影響到Fragment的生命周期。官網這張圖很好的說明了兩者生命周期的關系:可以看到Fragment比Activity多了幾個額外的生命周期回調方法:onAttach(Activity)當Fragment與Activity發(fā)生關聯時調用。onCreateView(LayoutInfla

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

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

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

溫馨提示

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

評論

0/150

提交評論