Arouter 使用一些問題

1.以Im插件為例 PluginEntryPlugin中增加幾個(gè)關(guān)鍵注冊(cè)類(small插件中注意要處理下)

    @PluginInitalizer
    @JvmField
    var initalizer: IPluginInitalizer? = null

    private fun doInit() {
       。。。。此處省略
        
        //Arouter 的group 注冊(cè)到map中 ,沒注冊(cè),會(huì)報(bào)group 找不到匹配的
        ARouter.getInstance().inject(this)
        if (initalizer != null) {
            ARouter.getInstance().addPluginRouteMap(initalizer)
        }
    }

2.在kotlin中使用@Autowired 使用的注意
在.java文件中使用@Autowired,不允許使用private 修飾(Arouter框架需要直接調(diào)用,不允許私優(yōu)化)

在kotlin中 不加修飾符,默認(rèn)也是私優(yōu)化的,也就是內(nèi)部重寫了get ,set方法

    @Autowired(name = ImConstants.EXTRA_UID)
    @JvmField
    var mSysUid = 0L

    @Autowired(name = ImConstants.EXTRA_USER_NAME)
    @JvmField
    var mName: String? = null

解決辦法:加上 @JvmField ,相當(dāng)于public了,

3.調(diào)整需要傳入一個(gè)Context(非插件化項(xiàng)目,其實(shí)不傳沒問題)

沒有傳context的情況下
    fun toSysActivity(sysUid: Long, sysName: String?) {
            val builder = ARouter.getInstance().build(ImConstants.AROUTE_SYS_ACTIVITY_PATH)
                    .withLong(ImConstants
                            .EXTRA_UID, sysUid)
            sysName?.let {
                builder.withString(ImConstants.EXTRA_USER_NAME, it)
            }
            builder..navigation()
        }
報(bào)錯(cuò):
2020-12-08 17:15:39.642 11479-11479/com.yy.dreamer E/ARouter::: _navigation error : java.lang.ClassCastException: com.yy.dreamer.BearApp cannot be cast to android.app.Activity[ThreadId=2 & ThreadName=main & FileName=ARouterTwo.java & ClassName=com.alibaba.android.arouter.launcher.ARouterTwo$2 & MethodName=run & LineNumber=438 ]

增加Context后,正常

    fun toSysActivity(activity: Context?, sysUid: Long, sysName: String?) {
        activity?.let {
            val builder = ARouter.getInstance().build(ImConstants.AROUTE_SYS_ACTIVITY_PATH)
                    .withLong(ImConstants
                            .EXTRA_UID, sysUid)
            sysName?.let {
                builder.withString(ImConstants.EXTRA_USER_NAME, it)
            }
            builder.withOptionsCompat(options(it)).navigation(it)
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容