最近使用kotlin開(kāi)發(fā)遇到了個(gè)問(wèn)題,就是使用轉(zhuǎn)場(chǎng)動(dòng)畫的時(shí)候出現(xiàn)了個(gè)有趣的情況
這是啟動(dòng)轉(zhuǎn)場(chǎng)動(dòng)畫代碼
startActivity(slideByCodeIntent, ActivityOptionsCompat.makeSceneTransitionAnimation(this@ShopCategoryListActivity,null).toBundle())
使用這段代碼跳轉(zhuǎn)在java環(huán)境是完全沒(méi)有問(wèn)題的,但是在kotlin是不可行的會(huì)報(bào)以下錯(cuò)誤
java.lang.NullPointerException: Attempt to read from field 'java.lang.Object android.support.v4.util.Pair.first' on a null object reference
一開(kāi)始百思不得其解啊,然后考慮了一下是不是參數(shù)問(wèn)題然后我們打斷點(diǎn)看看

沒(méi)錯(cuò),sharedElements[0]不為空,這是什么情況!
我們繼續(xù)跟進(jìn)

length長(zhǎng)度=1,也就是說(shuō)我們?cè)趕tartActivity傳進(jìn)來(lái)的null,在這里kotlin幫我們處理變成了一個(gè)pair了

pair[0] =null,到這里我們就清楚了,啟動(dòng)轉(zhuǎn)場(chǎng)代碼改成這樣就可以,去掉null,則可以正常運(yùn)行
startActivity(slideByCodeIntent, ActivityOptionsCompat.makeSceneTransitionAnimation(this@ShopCategoryListActivity).toBundle())
有大神能告訴這個(gè)原因就好了。