hegaojian / JetpackMvvm

:chicken::basketball:一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
https://github.com/hegaojian/JetpackMvvm
Apache License 2.0
3.1k stars 605 forks source link

请问在拦截器/Activity中,如何跳转到navigation中的fragment中去 #109

Closed roger54920 closed 2 years ago

roger54920 commented 2 years ago

class TokenOutInterceptor : Interceptor {

val gson: Gson by lazy { Gson() }

@kotlin.jvm.Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): Response {
    val response = chain.proceed(chain.request())
    return if (response.body() != null && response.body()!!.contentType() != null) {
        val mediaType = response.body()!!.contentType()
        val string = response.body()!!.string()
        val responseBody = ResponseBody.create(mediaType, string)
        val apiResponse = gson.fromJson(string, ApiResponse::class.java)
        //判断逻辑 模拟一下
        if (apiResponse.errorCode == 99999) {
            //如果是普通的activity话 可以直接跳转,如果是navigation中的fragment,可以发送通知跳转
            appContext.startActivity(Intent(appContext, TestActivity::class.java).apply {
                flags = Intent.FLAG_ACTIVITY_NEW_TASK
            })

           注:这里如何跳转 到navigation中的fragment 去
        }

        response.newBuilder().body(responseBody).build()
    } else {
        response
    }
}

}

我看着拦截器这里写的,但是怎么发送通知跳转不太会,请大佬帮助下,谢谢

hegaojian commented 2 years ago

我的建议先是跳到navigation绑定的那个 Activity,然后在 newIntent方法中 根据接收的数据,再通过navigation做跳转到的指定的 fragment