close

相信我們都有用過 Navigation Component 裡面的 Safe Args

他可包含許多型態

- Integer

- Float

- Long

- Boolean

- String

- Resource Reference

- Parcelable

- Serializable

- Enum

 

今天踩到的是在使用  Parcelable 時遇上的問題


     Caused by: java.lang.RuntimeException: Exception inflating com.xxx.tw.debug:navigation/main_nav_graph line 50

這個 message 表示我們的 graph 有錯誤

而且在 argument 的型別上會有提示 error type : return type for function cannot be resolved 

所以我看了一下此次 commit 的改動,發現是新增了 Parcelable Argement 的原故

我的 class 如下

data class ExternalVerificationCheckResponse(
    val verifyDetailObject: VerifyDetailObject? = null
) {
    @Parcelize
    data class VerifyDetailObject(
        val isUserNeedVerify: Boolean = false
    ) : Parcelable
}

 

而我的 graph 定義如下

<argument
    android:name="verifyDetailObject"
    app:argType="com.linebank.vo.ecosystem
                   .ExternalVerificationCheckResponse
                   .VerifyDetailObject" />

 

這邊有一個小地方要注意

inner class 的表示要以 $ 而不是 。

因此應該要改為 

com.linebank.vo.ecosystem
  .ExternalVerificationCheckResponse
  $VerifyDetailObject

這樣就成功解決問題囉

 


arrow
arrow

    顏澤偉 發表在 痞客邦 留言(0) 人氣()