lateinit property has not been initialized I can not find a way to Initialize it
I have lateinit property in my Kotlin activity, this is simplified version of that:
class CreateNewListOfQuestions : AppCompatActivity() {
lateinit var questionAnswerListOfObjects: ArrayList<QuestionAnswerObject>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_create_new_list_of_questions)
save.setOnClickListener {
questionAnswerListOfObjects.add(0, QuestionAnswerObject("question", "answer", 1))
}
}
}
The main problem is that when I generate mobile app and press “Save” button app stops working.
Logcat shows this error: “lateinit property questionAnswerListOfObjects has not been initialized”
I was trying many ways to initialize it but these ways did not help to me. How should I properly initialize it?
I am plining to add to ArrayList many objects of this class:
class QuestionAnswerObject(var question: String, var answer: String, var probability: Int=100) {}
android kotlin
add a comment |
I have lateinit property in my Kotlin activity, this is simplified version of that:
class CreateNewListOfQuestions : AppCompatActivity() {
lateinit var questionAnswerListOfObjects: ArrayList<QuestionAnswerObject>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_create_new_list_of_questions)
save.setOnClickListener {
questionAnswerListOfObjects.add(0, QuestionAnswerObject("question", "answer", 1))
}
}
}
The main problem is that when I generate mobile app and press “Save” button app stops working.
Logcat shows this error: “lateinit property questionAnswerListOfObjects has not been initialized”
I was trying many ways to initialize it but these ways did not help to me. How should I properly initialize it?
I am plining to add to ArrayList many objects of this class:
class QuestionAnswerObject(var question: String, var answer: String, var probability: Int=100) {}
android kotlin
Assign an object to it before the click listener is called the first time.
– Michael Butscher
Nov 24 '18 at 21:46
add a comment |
I have lateinit property in my Kotlin activity, this is simplified version of that:
class CreateNewListOfQuestions : AppCompatActivity() {
lateinit var questionAnswerListOfObjects: ArrayList<QuestionAnswerObject>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_create_new_list_of_questions)
save.setOnClickListener {
questionAnswerListOfObjects.add(0, QuestionAnswerObject("question", "answer", 1))
}
}
}
The main problem is that when I generate mobile app and press “Save” button app stops working.
Logcat shows this error: “lateinit property questionAnswerListOfObjects has not been initialized”
I was trying many ways to initialize it but these ways did not help to me. How should I properly initialize it?
I am plining to add to ArrayList many objects of this class:
class QuestionAnswerObject(var question: String, var answer: String, var probability: Int=100) {}
android kotlin
I have lateinit property in my Kotlin activity, this is simplified version of that:
class CreateNewListOfQuestions : AppCompatActivity() {
lateinit var questionAnswerListOfObjects: ArrayList<QuestionAnswerObject>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_create_new_list_of_questions)
save.setOnClickListener {
questionAnswerListOfObjects.add(0, QuestionAnswerObject("question", "answer", 1))
}
}
}
The main problem is that when I generate mobile app and press “Save” button app stops working.
Logcat shows this error: “lateinit property questionAnswerListOfObjects has not been initialized”
I was trying many ways to initialize it but these ways did not help to me. How should I properly initialize it?
I am plining to add to ArrayList many objects of this class:
class QuestionAnswerObject(var question: String, var answer: String, var probability: Int=100) {}
android kotlin
android kotlin
edited Nov 25 '18 at 14:16
Jayson Minard
40.2k17112173
40.2k17112173
asked Nov 24 '18 at 21:40
Павел МалиновскийПавел Малиновский
913
913
Assign an object to it before the click listener is called the first time.
– Michael Butscher
Nov 24 '18 at 21:46
add a comment |
Assign an object to it before the click listener is called the first time.
– Michael Butscher
Nov 24 '18 at 21:46
Assign an object to it before the click listener is called the first time.
– Michael Butscher
Nov 24 '18 at 21:46
Assign an object to it before the click listener is called the first time.
– Michael Butscher
Nov 24 '18 at 21:46
add a comment |
1 Answer
1
active
oldest
votes
It depends what you want.
For example if everything you need is using ArrayList<QuestionAnswerObject>
you dont need lateinit
at all:
var questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()
would be enough
If you want to get from Bundle
or from something else - you must initialize it before using.
Basically lateinit
keyword is used only to say "hey, compiler, I have a variable, it is not initialized yet, but I promise it will be initialized before I use it, so please mark it as not nullable field".
So if you really want to use lateinit
, just init that property earlier, for example add after setContentView
questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()
Thank you! It was perfect solution! :)
– Павел Малиновский
Nov 24 '18 at 21:56
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53462603%2flateinit-property-has-not-been-initialized-i-can-not-find-a-way-to-initialize-it%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
It depends what you want.
For example if everything you need is using ArrayList<QuestionAnswerObject>
you dont need lateinit
at all:
var questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()
would be enough
If you want to get from Bundle
or from something else - you must initialize it before using.
Basically lateinit
keyword is used only to say "hey, compiler, I have a variable, it is not initialized yet, but I promise it will be initialized before I use it, so please mark it as not nullable field".
So if you really want to use lateinit
, just init that property earlier, for example add after setContentView
questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()
Thank you! It was perfect solution! :)
– Павел Малиновский
Nov 24 '18 at 21:56
add a comment |
It depends what you want.
For example if everything you need is using ArrayList<QuestionAnswerObject>
you dont need lateinit
at all:
var questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()
would be enough
If you want to get from Bundle
or from something else - you must initialize it before using.
Basically lateinit
keyword is used only to say "hey, compiler, I have a variable, it is not initialized yet, but I promise it will be initialized before I use it, so please mark it as not nullable field".
So if you really want to use lateinit
, just init that property earlier, for example add after setContentView
questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()
Thank you! It was perfect solution! :)
– Павел Малиновский
Nov 24 '18 at 21:56
add a comment |
It depends what you want.
For example if everything you need is using ArrayList<QuestionAnswerObject>
you dont need lateinit
at all:
var questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()
would be enough
If you want to get from Bundle
or from something else - you must initialize it before using.
Basically lateinit
keyword is used only to say "hey, compiler, I have a variable, it is not initialized yet, but I promise it will be initialized before I use it, so please mark it as not nullable field".
So if you really want to use lateinit
, just init that property earlier, for example add after setContentView
questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()
It depends what you want.
For example if everything you need is using ArrayList<QuestionAnswerObject>
you dont need lateinit
at all:
var questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()
would be enough
If you want to get from Bundle
or from something else - you must initialize it before using.
Basically lateinit
keyword is used only to say "hey, compiler, I have a variable, it is not initialized yet, but I promise it will be initialized before I use it, so please mark it as not nullable field".
So if you really want to use lateinit
, just init that property earlier, for example add after setContentView
questionAnswerListOfObjects = ArrayList<QuestionAnswerObject>()
edited Nov 24 '18 at 21:55
answered Nov 24 '18 at 21:48
DEADMCDEADMC
2,84111325
2,84111325
Thank you! It was perfect solution! :)
– Павел Малиновский
Nov 24 '18 at 21:56
add a comment |
Thank you! It was perfect solution! :)
– Павел Малиновский
Nov 24 '18 at 21:56
Thank you! It was perfect solution! :)
– Павел Малиновский
Nov 24 '18 at 21:56
Thank you! It was perfect solution! :)
– Павел Малиновский
Nov 24 '18 at 21:56
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53462603%2flateinit-property-has-not-been-initialized-i-can-not-find-a-way-to-initialize-it%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Assign an object to it before the click listener is called the first time.
– Michael Butscher
Nov 24 '18 at 21:46