Android Lateinit属性给出异常,即使它是init

Android Lateinit属性给出异常,即使它是init,android,kotlin,Android,Kotlin,我的片段看起来像: open lateinit var recyclerView: RecyclerView override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { val rootView = inflater.cloneInContext(contextThemeWrapper).inflate(R.layout.

我的片段看起来像:

open lateinit var recyclerView: RecyclerView

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { 
    val rootView = inflater.cloneInContext(contextThemeWrapper).inflate(R.layout.xxx, container, false)

    if (savedInstanceState == null) {
        recyclerView = rootView.findViewById(R.id.sss)
    }
}
我在日志中看到此错误:

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{tv.lattelecom.app/tv.lattelecom.app.main.MainActivity}: kotlin.UninitializedPropertyAccessException: lateinit property recyclerView has not been initialized
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2793)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2864)
       at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4720)

我很好奇,这是怎么发生的,为什么会发生?此外,没有任何关于如何重现此错误的线索。我猜它发生在应用程序在后台运行了一段时间并且被旋转时。想法?

您可能想检查
recyclerView
是否已使用
if(savedInstanceState==null)
进行初始化,最好使用
if(recyclerView::lateinitVar.isInitialized)


请参见您可能想检查
recyclerView
是否已使用
if(savedInstanceState==null)
进行初始化,最好使用
if(recyclerView::lateinitVar.isInitialized)


请参见

只有当
savedInstanceState
为空时,才会初始化它,这可能不是真的。另外,请说明在必须使用recyclerView变量后在何处以及如何使用该变量initialized@TheWanderer你能给我举个例子吗?我想象它是这样的——当调用onCreateView时,savedInstance一开始总是空的——这就是我们初始化视图的时候。在此之后,savedInstance不应为null-这不是真的吗?我错过了什么?你为什么会有这种情况?这没有任何意义?只有当
savedInstanceState
为null时,才会初始化它,这可能不是真的。另外,请在必须使用recyclerView变量后显示在何处以及如何使用该变量initialized@TheWanderer你能给我举个例子吗?我想象它是这样的——当调用onCreateView时,savedInstance一开始总是空的——这就是我们初始化视图的时候。在此之后,savedInstance不应为null-这不是真的吗?我错过了什么?你为什么会有这种情况?这没有任何意义吗?我有很多视图是init的,带有lateinit属性。问题出在别处——在碎片生命周期的逻辑中。在轮换和应用程序处于后台之间的某个地方(我冒着风险说,应用程序进程被终止)。在这种情况下,请用必要的信息更新您的问题,以重现问题。最好是一个好的,我有很多视图都是init和lateinit属性。问题出在别处——在碎片生命周期的逻辑中。在轮换和应用程序处于后台之间的某个地方(我冒着风险说,应用程序进程被终止)。在这种情况下,请用必要的信息更新您的问题,以重现问题。最好是一个