【问题标题】:how to Initialize the lateinit variable?如何初始化lateinit变量?
【发布时间】:2019-12-30 05:15:24
【问题描述】:

我正在尝试运行 我收到错误的开源应用程序

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 开发的新手,所以我不知道如何在使用它之前初始化 lateinit 变量。在此之前,我尝试执行 git submodule update,正如 github 中提到的那样,但它没有用。所以现在我希望问题在于初始化 textInput 变量。

【问题讨论】:

  • 在使用textInput 之前,您需要执行textInput = mutableListOf("Abc", "Xyz") 之类的操作
  • 太好了,已经添加了相同的答案

标签: kotlin kotlin-lateinit


【解决方案1】:

这样做:

 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()
}

如果需要更多帮助,请告诉我。

【讨论】:

  • 接受答案,如果它对你有用,如果需要也可以寻求任何帮助
  • 应用程序运行没有任何问题,但应用程序内的内容是空的!我不知道所有人都能看到的是空白空间!是因为我从开源或任何其他问题中获取了该应用程序,这里是该应用程序的github。如果您对此问题有任何想法,请与我分享。
【解决方案2】:

您必须在使用之前初始化textInput 变量。 为此,您可以执行以下操作:

textInput = mutableListOf("Abc", "Xyz")

来自文档:在初始化之前访问 lateinit 属性会引发一个特殊异常,该异常清楚地标识正在访问的属性以及它尚未初始化的事实。

阅读更多:https://kotlinlang.org/docs/reference/properties.html#late-initialized-properties-and-variables

【讨论】:

    猜你喜欢
    • 2020-04-26
    • 1970-01-01
    • 2016-10-03
    • 2021-10-09
    • 2021-12-11
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多