2

當我遇到問題時,我正在嘗試使用kotlin及其令人敬畏的新功能。 在kotlin中有這樣一件很酷的事情,你可以直接使用xml中的id而不使用findViewById()。但是,當我將它應用於回收視圖並嘗試使其工作時,我得到一個空指針異常。我檢查了xml,我確實有一個帶有我使用的ID的回收站視圖。你們能幫我弄清楚爲什麼我在這裏得到一個空指針異常嗎?使用Kotlin在片段中引用RecyclerView時出現空指針錯誤

這裏是我參考我的回收商視圖和應用方法的代碼。

with(rv_my_device){ 
    setHasFixedSize(true) 
    layoutManager = LinearLayoutManager(activity) 
    listAdapter = MyDeviceAdapter(activity,titles,values) 
    adapter = listAdapter 
    } 

我正的誤差是

FATAL EXCEPTION: main                   
Process: com.example.sriram.mydevice, PID: 24771                    
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sriram.mydevice/com.example.sriram.mydevice.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference                    
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)                 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724  
at android.app.ActivityThread.-wrap12(ActivityThread.java 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)                     
at android.os.Handler.dispatchMessage(Handler.java:102)                     
at android.os.Looper.loop(Looper.java:154)                     
at android.app.ActivityThread.main(ActivityThread.java:6123)                     
at java.lang.reflect.Method.invoke(Native Method)                     

的科特林代碼存在於一個片段的onCreateView方法。

和傢伙,請不要downvote說這是一個關於空指針的重複問題。我知道什麼是空指針。我只是無法弄清楚我的代碼出錯了,或者我誤解了kotlin中的某些東西。

回答

8

如果你打電話給你的內部意見onCreateView它,當你打電話給他們在onCreateView

+0

這是有效的。但是,你能解釋爲什麼它可以和java一起使用,但不能和kotlin一起使用?我的意思是我在onCreateView方法中擁有整個回收視圖代碼,並且它在java中正常工作,但不能與kotlin一起工作。 –

+0

,因爲當使用kotlin擴展時,它會調用getView()。findViewById(R.id。rv_my_device),並且在onCreateView中,getView()將返回null –

+0

謝謝。這有助於.. –

1

rv_my_devicenull。除此之外,我們不能幫助你,因爲你沒有包含初始化變量的代碼,也沒有執行代碼的位置。所以不可能複製你的問題。

+0

那東西移到onViewCreated, 因爲觀點不被初始化。我沒有從R類中找到id並將其初始化爲變量的變量。 rv_my_device是xml文件中的ID,我可以直接在我的java類中使用它。而對於代碼的位置,即時更新它現在 –

相關問題