精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android進階:全面擁抱Activity Results API來替代onActivityResult

開發 前端
Activity Results API 是 Google官方推薦的Activity、Fragment獲取返回結果的方式。ActivityResultContract是一個抽象類,也是我們需要定義的協議,它需要去定義如何傳遞數據和如何處理返回的數據。

[[428908]]

本文轉載自微信公眾號「Android開發編程」,作者Android開發編程。轉載本文請聯系Android開發編程代碼眾號。

前言

隨著應用的擴展,onActivityResult回調方法各種嵌套、耦合嚴重、難以維護;

在google最新的activity-ktx beta版本中已經廢棄了原onActivityResult方法,推薦使用Activity Results API來處理頁面數據的處理;

通過新的 Activity Result API,我們可以單獨的類中處理結果回調,真正做到單一職責。

今天我們就來介紹下:

一、activity results api介紹和使用方法

1、什么是results api

Activity Results API 是 Google官方推薦的Activity、Fragment獲取返回結果的方式。ActivityResultContract是一個抽象類,也是我們需要定義的協議,它需要去定義如何傳遞數據和如何處理返回的數據;

相當于原startActivityForResult 和onActivityResult方法;

2、使用步驟

主要用到兩個組件

  • ActivityResultContract: 協議,它定義了如何傳遞數據和如何處理返回的數據;
  • ActivityResultLauncher: 啟動器,調用ActivityResultLauncher的launch方法來啟動頁面跳轉,作用相當于原來的startActivity()。

2.1在app下的build.gradle中加入依賴

  1. mplementation 'androidx.activity:activity-ktx:1.2.0-beta01' 
  2.  
  3. implementation 'androidx.fragment:fragment-ktx:1.3.0-beta01' 

2.2首先自定義一個ActivityResultContract,實現兩個activity互傳的數據處理

  1. class MyActivityResultContract : ActivityResultContract<String, String?>() { 
  2.     override fun createIntent(context: Context, input: String?): Intent { 
  3.         return Intent(context, SecondActivity::class.java).apply { 
  4.             putExtra("input", input) 
  5.         } 
  6.     } 
  7.     override fun parseResult(resultCode: Int, intent: Intent?): String? { 
  8.         val data = intent?.getStringExtra("result"
  9.         return if (resultCode == Activity.RESULT_OK && !TextUtils.isEmpty(data)) data else null 
  10.     } 
  11. 調用registerForActivityResult方法,注冊剛剛定義的contract協議,返回一個activityResultLauncher對象。 
  12.   val activityResultLauncher = registerForActivityResult(MyActivityResultContract()) { 
  13.             Toast.makeText(this, "result value is :${it}", Toast.LENGTH_LONG).show() 
  14.         } 

2.3 用返回的launcher對象啟動另一個activity界面

  1. btn_start_second.setOnClickListener { 
  2.             activityResultLauncher.launch("second activity start"
  3.    } 

3、使用內置的 ActivityResultContract來進行頁面跳轉

還可以通過ActivityResultContracts類來調用谷歌為我們內置的Contract,其中包含來各種常用的Contract

  • @StartActivityForResult: 通用的Contract,不做任何轉換,Intent作為輸入,ActivityResult作為輸出,這也是最常用的一個協定;
  • @RequestMultiplePermissions:用于請求一組權限;
  • @RequestPermission: 用于請求單個權限;
  • @TakePicturePreview: 調用MediaStore.ACTION_IMAGE_CAPTURE拍照,返回值為Bitmap圖片
  • @TakePicture: 調用MediaStore.ACTION_IMAGE_CAPTURE拍照,并將圖片保存到給定的Uri地址,返回true表示保存成功;
  • @TakeVideo: 調用MediaStore.ACTION_VIDEO_CAPTURE 拍攝視頻,保存到給定的Uri地址,返回一張縮略圖;
  • @PickContact: 從通訊錄APP獲取聯系人;
  • @GetContent: 提示用選擇一條內容,返回一個通過ContentResolver#openInputStream(Uri)訪問原生數據的Uri地址(content://形式) 。默認情況下,它增加了Intent#CATEGORY_OPENABLE, 返回可以表示流的內容;
  • @CreateDocument: 提示用戶選擇一個文檔,返回一個(file:/http:/content:)開頭的Uri。
  • @OpenMultipleDocuments: 提示用戶選擇文檔(可以選擇多個),分別返回它們的Uri,以List的形式;
  • @OpenDocumentTree: 提示用戶選擇一個目錄,并返回用戶選擇的作為一個Uri返回,應用程序可以完全管理返回目錄中的文檔;
  1. private val activityResultLauncher = 
  2.         registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { 
  3.             if (it.resultCode == RESULT_OK) { 
  4.                 val result = intent?.getStringExtra("result"
  5.                 tvName.text = result 
  6.             } 
  7.         } 
  8.    btnStartSecond.setOnClickListener { 
  9.             //點擊跳轉到SecondActivity 
  10.             val intent = Intent(this, SecondActivity::class.java) 
  11.             intent.putExtra("name""我是第一個頁面傳過去的參數"
  12.             activityResultLauncher.launch(intent) 
  13.         } 

使用系統內置的ActivityResultContract可以很方便的實現頁面間傳值來。

總結

使用activity results api替代傳統的onActivityResult方法,可以簡化我們的代碼,提高代碼的重用性;一起加油!

 

責任編輯:武曉燕 來源: Android開發編程
相關推薦

2021-10-13 07:30:13

AndroidAlarmManageWorkManager

2011-10-14 16:03:30

微軟Hadoop

2011-10-14 09:27:57

Hadoop數據庫SQL Server

2022-06-30 11:36:10

KubeSphereGitOpsLinux

2013-12-02 09:44:33

RadwareOpenStack

2016-03-24 14:02:05

ActivityAndroid啟動

2021-10-03 15:08:32

Android

2021-08-23 06:27:46

AndroidctivitysetContentV

2020-02-03 09:20:43

深度學習編程人工智能

2014-11-20 13:07:18

OracleSaaS

2015-05-21 08:55:46

華為敏捷網絡

2019-02-19 14:52:01

微軟開源Windows

2024-09-18 00:00:01

ChatGPTOpenAI工具型

2015-05-20 15:51:50

敏捷網絡/華為

2021-08-11 17:15:17

AndroidActivity場景

2021-08-24 07:53:28

AndroidActivity生命周期

2022-06-28 12:02:11

ClouderaCDP混合數據

2016-07-14 16:33:52

災備

2015-11-23 17:14:04

eBayKubernetesOpenStack
點贊
收藏

51CTO技術棧公眾號

久久久一二三四| 国产精品国语对白| 欲求不满的岳中文字幕| 一区二区三区短视频| 国产亚洲一本大道中文在线| 国产在线高清精品| 国产精彩视频在线| 成人精品视频| 精品av久久707| 十八禁视频网站在线观看| 黄在线免费观看| av中文字幕在线不卡| 国产精品久久久久久久av电影| 国产97免费视频| 一区二区小说| 日韩一级免费一区| 久久久久久久少妇| 丰满大乳少妇在线观看网站| 国产欧美日韩三级| 国产女人水真多18毛片18精品 | 香蕉视频国产在线观看| 成人在线综合网站| 国产精品入口夜色视频大尺度 | 一本色道88久久加勒比精品| 在线亚洲国产精品网| 欧美xxxxx少妇| 91精品福利观看| 色婷婷激情久久| av日韩在线看| 免费av在线| 国产亚洲欧美一区在线观看| 国产精选一区二区| 国产免费叼嘿网站免费| 蜜臀精品一区二区三区在线观看| 性欧美亚洲xxxx乳在线观看| 欧美做爰啪啪xxxⅹ性| 欧美人与物videos另类xxxxx| 精品久久一区二区| 国产农村妇女精品久久| 国产亚洲欧美日韩精品一区二区三区 | 国产a精品视频| 91精品在线国产| 中文字幕第2页| 视频一区欧美精品| 欧美一级黄色网| 亚洲精品国产精品乱码| 国产精品va| 欧美日本在线视频中文字字幕| 久久精品国产亚洲AV成人婷婷| 国产一区二区精品久| 亚洲精品资源美女情侣酒店| 欧美一级片黄色| 国产精品天天看天天狠| 日韩欧美一二区| 中文字幕一二三区| 亚洲一区二区三区四区电影| 日韩视频免费观看高清完整版| 亚洲三级在线观看视频| www.成人在线.com| 91精品在线观看入口| 在线观看av免费观看| 99er精品视频| 日韩欧美中文一区二区| 性xxxxxxxxx| 亚洲欧洲国产精品一区| 精品国产乱码久久久久久牛牛| 日本女人性视频| 中文字幕亚洲在线观看| 精品国产一区二区亚洲人成毛片| 亚洲国产精品第一页| 蜜臀av一区| 亚洲精品中文字| 妺妺窝人体色WWW精品| 日本一区二区在线看| 爱福利视频一区| 免费中文字幕在线| 亚洲深夜影院| 国产精品视频1区| a天堂在线视频| 波多野结衣在线一区| 鲁鲁视频www一区二区| 巨骚激情综合| 亚洲欧美欧美一区二区三区| av网站手机在线观看| 韩国成人二区| 欧美日韩精品免费| 香蕉久久久久久av成人| 精品在线手机视频| 久久久国产精品视频| 国产一级二级毛片| 老司机一区二区三区| 成人黄色大片在线免费观看| 天天操天天射天天| 国产精品免费久久| 日韩精品在线中文字幕| 成人国产一区| 精品sm捆绑视频| 亚洲女人久久久| 午夜在线a亚洲v天堂网2018| 亚洲综合在线做性| 九一国产在线| 亚洲成人精品在线观看| 高清一区在线观看| 久久人人爽人人爽人人片av不| 正在播放欧美一区| 成人精品在线看| 国产麻豆成人传媒免费观看| 欧美一二三区| av资源在线| 欧美一级免费观看| 1024手机在线观看你懂的| 精品999成人| 成人在线国产精品| 国产日产精品久久久久久婷婷| 亚洲一区二区四区蜜桃| 四季av一区二区三区| 国产探花在线精品一区二区| 久久久久久久国产| a天堂视频在线| 国产精品久久久久久一区二区三区| 国产va亚洲va在线va| 高清毛片在线观看| 日韩一区二区精品| 国产成人免费观看网站| 国内揄拍国内精品久久| 国产精品日韩在线观看| 亚洲 欧美 自拍偷拍| 国产精品对白交换视频| 日本中文字幕网址| 老司机亚洲精品一区二区| 亚洲精品一区二区在线观看| 亚洲色图综合区| 日本亚洲视频在线| 精品无人区一区二区三区| 精品视频在线一区二区| 在线精品视频小说1| 亚洲熟女乱综合一区二区三区 | 黄色一级片网址| 欧美天堂视频| 日韩电影中文字幕在线| 日韩女同强女同hd| 风间由美一区二区三区在线观看| 一本一道久久a久久综合精品| 自拍网站在线观看| 精品成人私密视频| 黄网站免费在线| 国产激情一区二区三区桃花岛亚洲 | 亚洲天堂777| 国产日产精品1区| 国产综合av在线| 57pao国产一区二区| 欧美精品久久久久久久| 国产av无码专区亚洲av| 成人免费在线观看入口| jizz欧美性11| 欧美高清视频手机在在线| 国产精品久久久| 亚洲 美腿 欧美 偷拍| 天天免费综合色| 中文字幕在线视频播放| 亚洲特级毛片| 国内精品二区| 美女18一级毛片一品久道久久综合| 欧美一级淫片007| a在线视频播放观看免费观看| 美洲天堂一区二卡三卡四卡视频 | 亚洲男人天堂av在线| 欧美伦理在线视频| 国产精品网站视频| 男人资源在线播放| 精品欧美乱码久久久久久1区2区| 欧美成人手机视频| 国产成人8x视频一区二区| 国产日韩亚洲欧美在线| 风间由美一区二区av101| 欧美中文字幕视频在线观看| 你懂的在线播放| 欧美亚洲动漫精品| 美国精品一区二区| 国产精品亚洲第一| 欧美一级欧美一级| 欧美女王vk| 成人av在线天堂| 亚洲羞羞网站| 国产午夜精品理论片a级探花| 中国老头性行为xxxx| 国产精品久久精品日日| 波多野结衣免费观看| 国内精品福利| 欧美日韩一区综合| 精品伊人久久| 欧美孕妇毛茸茸xxxx| 99中文字幕一区| 在线播放亚洲一区| 日韩欧美不卡视频| 国产精品福利在线播放| 中文字幕制服丝袜| 久久久久免费| 免费拍拍拍网站| 欧美日韩性在线观看| 亚洲一区二区三区毛片| 欧美大胆a人体大胆做受| 亚洲欧洲中文天堂| 亚洲精品久久久蜜桃动漫| 欧美日韩一二三四五区| 萌白酱视频在线| 成人免费视频app| 成人综合视频在线| 国语精品一区| 午夜精品短视频| 999久久精品| 国产精品女人网站| 高清av不卡| 久久夜色精品国产| 国产在线高清| 精品剧情v国产在线观看在线| 成人公开免费视频| 性欧美大战久久久久久久久| 国产传媒视频在线| 91小视频在线| 亚洲 自拍 另类 欧美 丝袜| 久久国产麻豆精品| 99精品视频在线看| 欧美三级黄美女| 亚洲激情一区二区| 国产成人在线中文字幕| 91视频在线免费观看| 亚洲精品国产嫩草在线观看| 国内精品一区二区三区| 国产一二区在线观看| 北条麻妃在线一区二区| 国产特黄在线| 亚洲男人天天操| 人妻中文字幕一区| 欧美日韩二区三区| 在线观看国产小视频| 欧美午夜精品久久久久久人妖| 欧产日产国产v| 国产精品二三区| 日韩精品一区二区三区在线视频| 国产三区在线成人av| 黄色国产在线观看| www.日韩在线| 国内精品久久99人妻无码| 国产一区二区精品久久91| 九九热精品在线播放| 日韩综合小视频| 精品99在线视频| 亚洲精品美女| 成年人视频观看| 一本久道综合久久精品| 男的插女的下面视频| 91精品国产乱码久久久久久久| 最新黄色av网站| 亚洲草久电影| 久久久久久久久久久久久国产| 99精品在线观看| 玖玖精品在线视频| 欧美福利影院| 日韩成人手机在线| 欧美色一级片| 欧美亚洲国产成人| 美女久久网站| www.xxx亚洲| 日本不卡在线视频| 日韩精品视频网址| 国产精品一二二区| 欧美一级大片免费看| 粉嫩aⅴ一区二区三区四区| 亚洲成人av免费在线观看| 成人av在线一区二区| 老司机免费视频| 91在线云播放| 在线观看亚洲大片短视频| 中文子幕无线码一区tr| 亚洲 欧美 国产 另类| 亚洲欧美成aⅴ人在线观看| 97免费在线观看视频| 日韩欧美在线第一页| 国产又粗又猛又爽又| 欧美日本不卡视频| 殴美一级特黄aaaaaa| 亚洲美女av在线| eeuss影院在线观看| 久久久99免费视频| 在线天堂资源www在线污| 国产精品扒开腿做爽爽爽视频| 国语自产精品视频在线看抢先版结局| 国产精品爽黄69| 中文字幕视频精品一区二区三区| 久久国产一区| 日韩电影在线视频| 欧美成人精品免费| 美女在线观看视频一区二区| 欧美一级特黄aaa| av一本久道久久综合久久鬼色| 国产美女免费无遮挡| 一区二区高清免费观看影视大全| 91蜜桃视频在线观看| 在线观看区一区二| 成人高潮片免费视频| 一本一道久久a久久精品逆3p | 91久色porny| 极品尤物一区二区| 夜夜揉揉日日人人青青一国产精品| 欧美精品xxxxx| 欧美日韩精品专区| 少妇精品视频一区二区 | 亚洲综合国产精品| 久久99高清| 欧美在线观看视频免费| 日韩av网站免费在线| 国产情侣久久久久aⅴ免费| 国产日产精品1区| 精品无码久久久久| 欧美久久久久久久久久| 亚洲人成色777777老人头| 欧美成人精品xxx| 久久亚洲精品爱爱| 国产精品99久久久久久久| 免费精品国产| 免费成人在线视频网站| 国产高清一区日本| 欧美波霸videosex极品| 色94色欧美sute亚洲线路一久| 亚洲av综合色区无码一区爱av | 国产精品剧情一区二区在线观看| 日产日韩在线亚洲欧美| 6080成人| 成人午夜免费剧场| 美国av一区二区| 一二三四在线观看视频| 欧美日韩国产色视频| 99久久一区二区| 国产亚洲欧美日韩美女| 黑人巨大精品| 九九99久久| 国模一区二区三区| 日韩少妇一区二区| 一区二区三区四区av| 亚洲无码精品国产| 亚洲日本aⅴ片在线观看香蕉| 中日韩脚交footjobhd| 国产精品麻豆免费版| 综合激情一区| 中文字幕在线国产| 一区二区三区蜜桃网| 国产偷拍一区二区| 日日狠狠久久偷偷四色综合免费| 精品国产美女a久久9999| 日韩欧美第二区在线观看| 久久av在线| 无码人中文字幕| 欧美体内she精视频| av中文字幕一区二区三区| 国产成人涩涩涩视频在线观看 | 青娱乐国产91| 久久中文字幕一区二区三区| 在线 丝袜 欧美 日韩 制服| 亚洲一级在线观看| 色播色播色播色播色播在线| 57pao国产成人免费| 亚洲精品小区久久久久久| www.99av.com| 国产精品久久久久天堂| 国产免费高清av| 性欧美亚洲xxxx乳在线观看| 欧美男男freegayvideosroom| 3d动漫一区二区三区| 国产精品99久久久久久久女警| 国产成人精品av久久| 亚洲国产中文字幕在线观看| 国产在线精彩视频| 亚洲一区二区三区精品视频| 精品在线观看视频| 中文字幕另类日韩欧美亚洲嫩草| 亚洲成人黄色在线观看| 免费h在线看| 日产精品高清视频免费| 国内精品久久久久影院薰衣草| 91嫩草|国产丨精品入口| 欧美第一区第二区| 超碰在线cao| 一本一道久久a久久综合精品| 国内精品久久久久影院一蜜桃| 欧美三级黄色大片| 亚洲精品国精品久久99热一| 日本免费久久| 四虎免费在线观看视频| 97国产一区二区| 亚洲手机在线观看| 欧美激情图片区| 日韩在线观看| 中文字幕制服丝袜| 欧洲亚洲精品在线| 成人影院在线视频| 亚洲国产日韩综合一区| 国产精品18久久久| 亚洲综合网av| 性欧美长视频免费观看不卡|