首先顽冶,為什么要使用ARouter 珍昨?原生的路由方案一般通過顯式intent和隱式intent兩種方案實(shí)現(xiàn)墓毒。在顯示intent的情況下木蹬,因?yàn)闀?huì)直接存在類依賴的問題至耻,導(dǎo)致耦合很嚴(yán)重,而在隱式的情況下,一般的配置都是在Mainfest中的镊叁,這就導(dǎo)致了擴(kuò)展性較大 尘颓。
1.初始化,如下圖 :
2.如果只是進(jìn)行簡(jiǎn)單的跳轉(zhuǎn)頁面晦譬,
ARouter.getInstance().build(“目標(biāo)界面對(duì)應(yīng)的路徑”).navigation(); 就這樣一行代碼即可完成跳轉(zhuǎn)界面疤苹。
另外:
1)首先:在Activity/Fragment類上面寫上 Route path 注解。
注意:這里的路徑需要注意的是至少需要有兩級(jí)蛔添,/xx/xx
2)然后:在Activity/Fragment類里面進(jìn)入Arouter 注入痰催,也就是:ARouter.getInstance().inject(this);
3)接著:目標(biāo)的Activity類上面需要聲明Route path 注解,以此對(duì)應(yīng)(跳轉(zhuǎn)如果不對(duì)應(yīng)路徑迎瞧,框架會(huì)Toast說路徑不匹配)
當(dāng)然最好是把路徑寫入到靜態(tài)類中夸溶,封裝一下
注銷 :在Applicaton中 onTerminate()中注銷
跳轉(zhuǎn)方式 :
1) ARouter.getInstance().build("路徑").navigation(); //和注解路徑一致
2)帶參傳
3)接收參數(shù) ,我們需要在目標(biāo)界面凶硅,使用Autowired注解
值得注意的是缝裁,只有當(dāng) @Autowired(name = "test"),也就是key標(biāo)簽一致的情況下足绅,才可以獲取到對(duì)象的值捷绑,如果不寫標(biāo)簽名,結(jié)果會(huì)為null 氢妈。為了規(guī)避每一個(gè)可能會(huì)遇到的風(fēng)險(xiǎn)粹污,建議在@Autowired里面 都寫上與之對(duì)應(yīng)具體的key名。
4)界面跳轉(zhuǎn)動(dòng)畫首量,直接調(diào)用withTransition壮吩,里面?zhèn)魅雰蓚€(gè)動(dòng)畫即可(R.anim.xxx)
5)使用URI進(jìn)行跳轉(zhuǎn)
ARouter框架也可以使用URI進(jìn)行匹配跳轉(zhuǎn),代碼也很少加缘,只需匹配路徑一致即可完成跳轉(zhuǎn):
6)Fragment的跳轉(zhuǎn)也可以參照Activity跳轉(zhuǎn)鸭叙,第一步依舊是先寫上類注釋,然后是強(qiáng)轉(zhuǎn)拣宏,代碼如下
7)攔截器的使用 沈贝,priority數(shù)字越小,優(yōu)先級(jí)越高 勋乾,攔截器方法越先執(zhí)行
8)ARouter如何實(shí)現(xiàn)類似startActivityForResult()宋下?
以上就是ARouter的應(yīng)用,希望有所幫助辑莫,Star !!!