Android統(tǒng)一處理登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)到目標(biāo)頁(yè)面的方式
需求場(chǎng)景
我們?cè)陂_(kāi)發(fā)應(yīng)用的時(shí)候經(jīng)常會(huì)遇到先登錄,登錄成功后再跳轉(zhuǎn)到目標(biāo)頁(yè)面。比如商品詳情頁(yè)面我們點(diǎn)擊購(gòu)買(mǎi)必須要先登錄,登錄完成才能去下單支付。針對(duì)這種場(chǎng)景,我們一般有兩種做法:
- 點(diǎn)擊購(gòu)買(mǎi)跳轉(zhuǎn)到登錄,登錄完成需要用戶再次點(diǎn)擊購(gòu)買(mǎi)才能去下單支付頁(yè)面,這種用戶體驗(yàn)不是很好。
- 點(diǎn)擊購(gòu)買(mǎi)跳轉(zhuǎn)到登錄,登錄完成直接跳轉(zhuǎn)到下單支付頁(yè)面。
第一種我們就不談了產(chǎn)品經(jīng)理不同意??。第二種我們一般是在 onActivityResult 里面獲取到登錄成功,然后根據(jù) code 跳轉(zhuǎn)到目標(biāo)頁(yè)面。這種方式缺點(diǎn)就是我們要在每個(gè)頁(yè)面都處理相同的邏輯還有定義各種 code,如果應(yīng)用里面很多這種場(chǎng)景也太繁瑣了。那有沒(méi)有統(tǒng)一的方式去處理這種場(chǎng)景就是我們今天的主題了。
封裝方式
我們的應(yīng)用是組件化的,APP 的頁(yè)面跳轉(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() } }
//登錄成功后在登錄頁(yè)面執(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ù),登錄頁(yè)面在登錄成功后跳轉(zhuǎn)到目標(biāo)頁(yè)面,針對(duì)上面的場(chǎng)景直接調(diào)用 checkLoginToTarget 方法。
checkLoginToTarget(ARouter.getInstance().build(Constant.PAY_PAGE).withInt(Constant.GOOD_ID,id))
通過(guò) Arouter 傳入下單支付的路由地址,并且攜帶了商品的 ID,生成了 Postcard 參數(shù)。登錄成功后能帶著商品 ID 直接下單支付了。
最后
如果項(xiàng)目里沒(méi)有使用路由庫(kù)可以使用 Intent 封裝實(shí)現(xiàn),或者別的路由庫(kù)也可以用上面的方式去做統(tǒng)一處理。
到此這篇關(guān)于Android統(tǒng)一處理登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)到目標(biāo)頁(yè)面的文章就介紹到這了,更多相關(guān)Android登錄后攜帶數(shù)據(jù)跳轉(zhuǎn)頁(yè)面內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android Studio使用ViewPager+Fragment實(shí)現(xiàn)滑動(dòng)菜單Tab效果
這篇文章主要為大家詳細(xì)介紹了Android Studio使用ViewPager+Fragment實(shí)現(xiàn)滑動(dòng)菜單Tab效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09Android實(shí)現(xiàn)定時(shí)器的五種方法實(shí)例詳解
這篇文章主要介紹了Android實(shí)現(xiàn)定時(shí)器的五種方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02Android 8.1隱藏狀態(tài)欄圖標(biāo)的實(shí)例代碼
這篇文章主要介紹了Android 8.1隱藏狀態(tài)欄圖標(biāo),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04最近較流行的效果 Android自定義View實(shí)現(xiàn)傾斜列表/圖片
最近較流行的效果,這篇文章主要介紹了Android自定義View實(shí)現(xiàn)傾斜列表/圖片的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06Android實(shí)現(xiàn)數(shù)字跳動(dòng)效果的TextView方法示例
數(shù)字跳動(dòng)效果相信大家應(yīng)該都見(jiàn)過(guò),在開(kāi)發(fā)加上這種效果后會(huì)讓ui交互看起來(lái)非常不錯(cuò),所以下面這篇文章主要給大家介紹了Android實(shí)現(xiàn)數(shù)字跳動(dòng)的TextView的相關(guān)資料,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看看吧。2017-04-04Android開(kāi)發(fā)中button按鈕的使用及動(dòng)態(tài)添加組件方法示例
這篇文章主要介紹了Android開(kāi)發(fā)中button按鈕的使用及動(dòng)態(tài)添加組件方法,涉及Android針對(duì)button按鈕的事件響應(yīng)及TextView動(dòng)態(tài)添加相關(guān)操作技巧,需要的朋友可以參考下2017-11-11Android GridView擴(kuò)展仿微信微博發(fā)圖動(dòng)態(tài)添加刪除圖片功能
這篇文章主要為大家詳細(xì)介紹了Android GridView擴(kuò)展仿微信微博發(fā)圖動(dòng)態(tài)添加刪除圖片功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android編程實(shí)現(xiàn)為L(zhǎng)istView創(chuàng)建上下文菜單(ContextMenu)的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)為L(zhǎng)istView創(chuàng)建上下文菜單(ContextMenu)的方法,簡(jiǎn)單分析了上下文菜單的功能及ListView創(chuàng)建上下文菜單(ContextMenu)的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-02-02