cannot generate view binders java.lang.StackOverflowError 最近寫kotlin項目,使用databinding,在適配器中定義了事件介面,在適配器中添加了長按事件,setVariable longClick,同樣的還有點擊事件,結果一添加長按事 ...
cannot generate view binders java.lang.StackOverflowError
最近寫kotlin項目,使用databinding,在適配器中定義了事件介面,在適配器中添加了長按事件,setVariable longClick,同樣的還有點擊事件,結果一添加長按事件就報錯,沒關係,穩住,百度一下
但是看到這樣的異常心裡有種感覺,估計百度可能會不行(百度:我行),結果我的天,各種花里胡哨的異常,並不是我想要的,然後我開始懷疑我本身的代碼,但是嘗試了很多方法,沒效果,
於是我去github上看了很多庫,並沒有發現什麼,後來谷歌(谷歌:我行)了一把,然後突然看到一個標題,我喜出望外,果然,這哥們跟我同病相憐,一模一樣
參考:https://n8ebel.github.io/2017-07-27-bug-busting-databinding-onLongClick/
由於java的習慣,我們寫kotlin的時候容易忽略很多問題,先看我本身的代碼,如下圖,然後在addLongEvent,沒問題,但是看了這篇文章發現忽略了一個地方,裡面有一句話,
In Listener Bindings, only your return value must match the expected return value of the listener (unless it is expecting void),看到了,must return value,跟文章的一樣,That was my “ah ha!” moment.
不對,我應該是“卧槽“,才發現長按事件因為是自定義介面加入綁定的,所以忽略了返回值,然後我們的androidstudio又是這麼的強大(as:我很叼),唯一的慶幸是我很明確的知道我是添加長按事件後才導致的,不然我還真的無從下手,在LongFunction介面處添加一個boolean類型返回就ok了
解決後的代碼,運行一波,完美