使用 Kotlin 在片段中引用 RecyclerView 时出现空指针错误
Null Pointer Error in referencing RecyclerView in a fragment using Kotlin
我在 android 中尝试 kotlin 及其令人敬畏的新功能时遇到了问题。
在 kotlin 中有一个很酷的东西,你可以直接使用 xml 中的 id 而无需使用 findViewById()
。但是当我将它应用于回收器视图并尝试使其工作时,我得到了一个空指针异常。我检查了 xml,我确实有一个回收站视图,其中包含我使用的 ID。你们能帮我弄清楚为什么我在这里得到一个空指针异常吗?
这是我引用回收站视图并在其上应用方法的代码。
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 方法中存在 kotlin 代码。
伙计们,请不要投票说这是一个关于空指针的重复问题。我知道什么是空指针。我只是不知道我的代码哪里出错了,或者我是否误解了 kotlin 中的某些内容..
rv_my_device
是 null
。除此之外我们无法帮助您,因为您没有包含初始化变量的代码,也没有包含代码执行的位置。所以不可能重现你的问题。
如果您在 onCreateView 中调用您的视图,请将其移至 onViewCreated,
因为在 onCreateView
中调用它们时视图未初始化
我在 android 中尝试 kotlin 及其令人敬畏的新功能时遇到了问题。
在 kotlin 中有一个很酷的东西,你可以直接使用 xml 中的 id 而无需使用 findViewById()
。但是当我将它应用于回收器视图并尝试使其工作时,我得到了一个空指针异常。我检查了 xml,我确实有一个回收站视图,其中包含我使用的 ID。你们能帮我弄清楚为什么我在这里得到一个空指针异常吗?
这是我引用回收站视图并在其上应用方法的代码。
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 方法中存在 kotlin 代码。
伙计们,请不要投票说这是一个关于空指针的重复问题。我知道什么是空指针。我只是不知道我的代码哪里出错了,或者我是否误解了 kotlin 中的某些内容..
rv_my_device
是 null
。除此之外我们无法帮助您,因为您没有包含初始化变量的代码,也没有包含代码执行的位置。所以不可能重现你的问题。
如果您在 onCreateView 中调用您的视图,请将其移至 onViewCreated, 因为在 onCreateView
中调用它们时视图未初始化