如何初始化 lateinit 变量?
how to Initialize the lateinit variable?
我正在尝试 运行 开源应用程序,我在其中遇到错误
lateinit property textInput has not been initialized
使用textInput
的主要代码
class MainActivity : BaseActivity() {
private val drawerToggle by lazy { ActionBarDrawerToggle(this, drawer_layout, drawer_open, drawer_close) }
private val survivalContent by lazy { SurvivalContent(assets) }
private lateinit var currentUrl: String
private lateinit var currentTopicName: String
private lateinit var textInput: MutableList<String>
private var lastFontSize = State.getFontSize()
private var lastNightMode = State.nightModeString()
private var lastAllowSelect = State.allowSelect()
private val linearLayoutManager by lazy { LinearLayoutManager(this) }
private var isInEditMode by observable(false, onChange = { _, _, newMode ->
if (newMode) {
fab.setImageResource(drawable.ic_image_remove_red_eye)
contentRecycler.adapter = EditingRecyclerAdapter(textInput)
} else {
fab.setImageResource(drawable.ic_editor_mode_edit)
contentRecycler.adapter = MarkdownRecyclerAdapter(textInput, imageWidth(), onURLClick)
}
contentRecycler.scrollToPosition(State.lastScrollPos)
})
因为我是 android 开发的新手,所以我不知道如何在使用 it.Before 之前初始化 lateinit 变量,所以我尝试按照 git submodule update
github 但它没有 worked.so 现在我希望问题出在初始化 textInput 变量。
您必须在使用前初始化 textInput
变量。
为此,您可以这样做:
textInput = mutableListOf("Abc", "Xyz")
来自文档:在初始化之前访问 lateinit 属性 会抛出一个特殊异常,该异常清楚地标识了正在访问的 属性 以及尚未初始化的事实。
阅读更多:https://kotlinlang.org/docs/reference/properties.html#late-initialized-properties-and-variables
这样做:
private var currentUrl: String =""
private var currentTopicName: String =""
private var textInput= mutableListOf<String>()
你可以用 lateinit 做同样的事情,你真的不需要在这里使用吗?但如果你
想做的话。
private lateinit var currentUrl: String
private lateinit var currentTopicName: String
private lateinit var textInput: MutableList<String>
在 onCreate() 方法中,您只需初始化这些所有变量。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
currentUrl = String()
currentTopicName = String()
textInput= mutableListOf()
}
如果需要更多帮助,请告诉我。
我正在尝试 运行 开源应用程序,我在其中遇到错误
lateinit property textInput has not been initialized
使用textInput
的主要代码
class MainActivity : BaseActivity() {
private val drawerToggle by lazy { ActionBarDrawerToggle(this, drawer_layout, drawer_open, drawer_close) }
private val survivalContent by lazy { SurvivalContent(assets) }
private lateinit var currentUrl: String
private lateinit var currentTopicName: String
private lateinit var textInput: MutableList<String>
private var lastFontSize = State.getFontSize()
private var lastNightMode = State.nightModeString()
private var lastAllowSelect = State.allowSelect()
private val linearLayoutManager by lazy { LinearLayoutManager(this) }
private var isInEditMode by observable(false, onChange = { _, _, newMode ->
if (newMode) {
fab.setImageResource(drawable.ic_image_remove_red_eye)
contentRecycler.adapter = EditingRecyclerAdapter(textInput)
} else {
fab.setImageResource(drawable.ic_editor_mode_edit)
contentRecycler.adapter = MarkdownRecyclerAdapter(textInput, imageWidth(), onURLClick)
}
contentRecycler.scrollToPosition(State.lastScrollPos)
})
因为我是 android 开发的新手,所以我不知道如何在使用 it.Before 之前初始化 lateinit 变量,所以我尝试按照 git submodule update
github 但它没有 worked.so 现在我希望问题出在初始化 textInput 变量。
您必须在使用前初始化 textInput
变量。
为此,您可以这样做:
textInput = mutableListOf("Abc", "Xyz")
来自文档:在初始化之前访问 lateinit 属性 会抛出一个特殊异常,该异常清楚地标识了正在访问的 属性 以及尚未初始化的事实。
阅读更多:https://kotlinlang.org/docs/reference/properties.html#late-initialized-properties-and-variables
这样做:
private var currentUrl: String =""
private var currentTopicName: String =""
private var textInput= mutableListOf<String>()
你可以用 lateinit 做同样的事情,你真的不需要在这里使用吗?但如果你 想做的话。
private lateinit var currentUrl: String
private lateinit var currentTopicName: String
private lateinit var textInput: MutableList<String>
在 onCreate() 方法中,您只需初始化这些所有变量。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
currentUrl = String()
currentTopicName = String()
textInput= mutableListOf()
}
如果需要更多帮助,请告诉我。