Android統(tǒng)一處理登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)到目標(biāo)頁面的方式
需求場景
我們?cè)陂_發(fā)應(yīng)用的時(shí)候經(jīng)常會(huì)遇到先登錄,登錄成功后再跳轉(zhuǎn)到目標(biāo)頁面。比如商品詳情頁面我們點(diǎn)擊購買必須要先登錄,登錄完成才能去下單支付。針對(duì)這種場景,我們一般有兩種做法:
- 點(diǎn)擊購買跳轉(zhuǎn)到登錄,登錄完成需要用戶再次點(diǎn)擊購買才能去下單支付頁面,這種用戶體驗(yàn)不是很好。
- 點(diǎn)擊購買跳轉(zhuǎn)到登錄,登錄完成直接跳轉(zhuǎn)到下單支付頁面。
第一種我們就不談了產(chǎn)品經(jīng)理不同意??。第二種我們一般是在 onActivityResult 里面獲取到登錄成功,然后根據(jù) code 跳轉(zhuǎn)到目標(biāo)頁面。這種方式缺點(diǎn)就是我們要在每個(gè)頁面都處理相同的邏輯還有定義各種 code,如果應(yīng)用里面很多這種場景也太繁瑣了。那有沒有統(tǒng)一的方式去處理這種場景就是我們今天的主題了。
封裝方式
我們的應(yīng)用是組件化的,APP 的頁面跳轉(zhuǎn)使用了 Arouter。所以我們統(tǒng)一處理使用 Arouter 封裝。直接上代碼
fun checkLoginToTarget(postcard: Postcard) {//Postcard 是 Arouter 的類
if (User.isLogin()) {
postcard.navigation()
} else {
//不能使用 postcard 切換 path 直接跳轉(zhuǎn),因?yàn)?group 可能不同,所以重新 build
ARouter.getInstance().build(Constant.LOGIN)
.with(postcard.extras)//獲取攜帶的參數(shù)重新轉(zhuǎn)入
.withString(Constant.TAGACTIVIFY, postcard.path)//添加目標(biāo)路由
.navigation()
}
}//登錄成功后在登錄頁面執(zhí)行這個(gè)方法
fun loginSuccess() {
val intent= intent
val target = intent.getStringExtra(Constant.TAGACTIVIFY)//獲取目標(biāo)路由
target?.apply {
if (isNotEmpty()){
val build = ARouter.getInstance().build(this)
val extras = intent.extras//獲取攜帶的參數(shù)
if (extras != null) {
build.with(extras)
}
build.navigation()
}
}
finish()
}代碼加了注釋,使用 Kotlin 封裝了頂層函數(shù),登錄頁面在登錄成功后跳轉(zhuǎn)到目標(biāo)頁面,針對(duì)上面的場景直接調(diào)用 checkLoginToTarget 方法。
checkLoginToTarget(ARouter.getInstance().build(Constant.PAY_PAGE).withInt(Constant.GOOD_ID,id))
通過 Arouter 傳入下單支付的路由地址,并且攜帶了商品的 ID,生成了 Postcard 參數(shù)。登錄成功后能帶著商品 ID 直接下單支付了。
最后
如果項(xiàng)目里沒有使用路由庫可以使用 Intent 封裝實(shí)現(xiàn),或者別的路由庫也可以用上面的方式去做統(tǒng)一處理。
到此這篇關(guān)于Android統(tǒng)一處理登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)到目標(biāo)頁面的文章就介紹到這了,更多相關(guān)Android登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)頁面內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android Http協(xié)議訪問網(wǎng)絡(luò)實(shí)例(3種)
本篇文章主要介紹了Android Http協(xié)議訪問網(wǎng)絡(luò)實(shí)例(3種),具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07
詳解Android Activity中的幾種監(jiān)聽器和實(shí)現(xiàn)方式
這篇文章主要介紹了Activity中的幾種監(jiān)聽器和實(shí)現(xiàn)方式的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-04-04
Android手機(jī)端小米推送Demo解析和實(shí)現(xiàn)方法
本篇文章主要是介紹了Android端小米推送Demo解析和實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10
Android源碼中final關(guān)鍵字的用法及final,finally,finalize的區(qū)別
Android的源碼中很多地方對(duì)final關(guān)鍵字的用法很是“別出心裁”,之所以這么說是因?yàn)槲覐臎]看過是這么使用final關(guān)鍵字的,通過本文給大家分享Android源碼中final關(guān)鍵字的用法及final,finally,finalize的區(qū)別,感興趣的朋友一起學(xué)習(xí)吧2015-12-12
Android樣式的開發(fā):layer-list實(shí)例詳解
本文主要介紹Android樣式開發(fā)layer-list,這里整理了詳細(xì)的資料,及簡單示例代碼有興趣的小伙伴可以參考下2016-09-09
android讀寫sd卡操作寫入數(shù)據(jù)讀取數(shù)據(jù)示例
這篇文章主要介紹了android讀寫sd卡操作,示例實(shí)現(xiàn)了寫入數(shù)據(jù)讀取數(shù)據(jù)的功能,大家參考使用吧2014-01-01
Android自定義ViewGroup實(shí)現(xiàn)九宮格布局
這篇文章主要為大家詳細(xì)介紹了Android如何通過自定義ViewGroup實(shí)現(xiàn)九宮格布局,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-12-12

