kotlin.TypeCastException: null cannot be cast to non-null type com.midsizemango.databasekotlin.Note

Internet of Things IoT Frameworks 2 years ago

0 1 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating
_x000D_ _x000D_ I am trying to code my app in Kotlin, but I am getting null cannot be casted to non-null type and app force stops when I open EditNoteActivity at EXTRA_NOTE probably. Any Help is Highly Appreciated Code: class EditNoteActivity : AppCompatActivity() { var note: Note? = null private val editNote: TextView? = null private val fabdrwble: Boolean? = null private val notesData: MutableList? = null private var databaseHelper: DatabaseHelper? = null private val save: Boolean? = null private var saveButton: FloatingActionButton? = null private val tint: ColorStateList? = null internal var mRowId: Long? = null internal var spinner: Spinner? = null internal var spinnertext: String? = null internal var fav: Int = 0 internal var mSharedFromIntentFilter = false internal var editTitle: EditText? = null internal var editContent: EditText? = null internal var inputlayoutTitle: TextInputLayout? = null internal var inputlayoutContent: TextInputLayout? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_edit_note) var toolbar = findViewById(R.id.toolbar_edit) as Toolbar? setSupportActionBar(toolbar) if (supportActionBar != null) supportActionBar!!.setDisplayHomeAsUpEnabled(true) databaseHelper = DatabaseHelper(applicationContext) inputlayoutTitle = findViewById(R.id.inputlayoutTitle) as TextInputLayout? inputlayoutContent = findViewById(R.id.inputlayoutContent) as TextInputLayout? editTitle = findViewById(R.id.note_title) as EditText editContent = findViewById(R.id.note_content) as EditText? val bundle = intent.extras val s = bundle.getString("edit") if (s == "add") { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE) } else if (s == "editv") { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) } note = intent.getSerializableExtra(EXTRA_NOTE) as Note if (note != null) { editTitle?.setText(note!!.getTitle()) editContent?.setText(note!!.getContent()) } else { note = Note() //note.setUpdatedAt(new Date()); } saveButton = findViewById(R.id.add_edit_button) as FloatingActionButton? saveButton!!.setOnClickListener { if (isNoteFormOk) { setNoteResult() finish() } else validateNoteForm() } var ll = findViewById(R.id.llmain) as LinearLayout? var ll1 = findViewById(R.id.ll1) as LinearLayout? /*if(note.getColor() == Color.TRANSPARENT){ selectedColor = preselect; }else { selectedColor = note.getColor(); } getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); systemBarTintManager = new SystemBarTintManager(this); systemBarTintManager.setStatusBarTintEnabled(true); ll.setBackgroundColor(selectedColor); ll1.setBackgroundColor(selectedColor); toolbar.setBackgroundColor(note.getColor()); systemBarTintManager.setStatusBarTintColor(selectedColor);*/ } override fun onResume() { super.onResume() } override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { android.R.id.home -> { onBack() return true } /* case R.id.speech: try { displaySpeechRecognizer(); } catch (ActivityNotFoundException e) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://market.android.com/details?id=com.google.android.googlequicksearchbox")); startActivity(browserIntent); } return true;*/ else -> return super.onOptionsItemSelected(item) } } private fun displaySpeechRecognizer() { val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH) intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM) startActivityForResult(intent, SPEECH_REQUEST_CODE) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { if (requestCode == SPEECH_REQUEST_CODE && resultCode == Activity.RESULT_OK) { val results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS) val spokenText = results[0] editContent?.setText(spokenText) } if (requestCode == RequestResultCode.REQUEST_CODE_ADD_NOTE) { if (resultCode == Activity.RESULT_OK) { addNote(data) } } } private val isNoteFormOk: Boolean get() { val title = editTitle?.text.toString() return !(title == null || title.trim { it <= ' ' }.length == 0) } private fun validateNoteForm() { var msg: String? = null if (isNullOrBlank(editTitle?.text.toString())) { msg = "Title Required" inputlayoutTitle?.error = "Title is Missing" } if (msg != null) { Toast.makeText(applicationContext, msg, Toast.LENGTH_LONG).show() } } private fun setNoteResult() { note!!.setTitle(editTitle?.text.toString().trim { it <= ' ' }) note!!.setContent(editContent?.text.toString().trim { it <= ' ' }) //note.setUpdatedAt(new Date()); val intent = Intent() intent.putExtra(EXTRA_NOTE, note) setResult(Activity.RESULT_OK, intent) //addNote(intent); Toast.makeText(this@EditNoteActivity, "Note Saved.", Toast.LENGTH_LONG).show() } private fun onBack() { if (isNoteFormOk) { if (editTitle?.text.toString() == note!!.getTitle() && editContent?.text.toString() == note!!.getContent()) { setResult(Activity.RESULT_CANCELED, Intent()) finish() } else { AlertDialog.Builder(this@EditNoteActivity) .setTitle("Save") .setMessage("Do You Want to Save Note") .setPositiveButton("SAVE") { dialog, which -> setNoteResult() finish() }.setNegativeButton("CANCEL") { dialog, which -> setResult(Activity.RESULT_CANCELED, Intent()) finish() }.show() } } else { setResult(Activity.RESULT_CANCELED, Intent()) finish() } } private fun addNote(data: Intent) { val note = data.getSerializableExtra(EXTRA_NOTE) as Note val noteId = databaseHelper!!.createNote(note) note.setId(noteId) } override fun onBackPressed() { onBack() val intentHome = Intent(this@EditNoteActivity, MainActivity::class.java) intentHome.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP intentHome.putExtra(EXTRA_NOTE, note) setResult(Activity.RESULT_OK, intentHome) } companion object { private val EXTRA_NOTE = "EXTRA_NOTE" private val SPEECH_REQUEST_CODE = 0 fun isNullOrBlank(str: String?): Boolean { return str == null || str.trim { it <= ' ' }.length == 0 } } } Logs: java.lang.RuntimeException: Unable to start activity ComponentInfo{ com.midsizemango.databasekotlin/com.midsizemango.databasekotlin.EditNoteActivity}: kotlin.TypeCastException: null cannot be cast to non-null type com.midsizemango.databasekotlin.Note at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: kotlin.TypeCastException: null cannot be cast to non-null type com.midsizemango.databasekotlin.Note at com.midsizemango.databasekotlin.EditNoteActivity.onCreate(EditNoteActivity.kt:82) at android.app.Activity.performCreate(Activity.java:5933) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)  at android.app.ActivityThread.access$800(ActivityThread.java:144)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:135)  at android.app.ActivityThread.main(ActivityThread.java:5221)  at java.lang.reflect.Method.invoke(Native Method)  at java.lang.reflect.Method.invoke(Method.java:372)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:694)

Posted on 16 Aug 2022, this text provides information on IoT Frameworks related to Internet of Things. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (1)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago
_x000D_ In this line: note = intent.getSerializableExtra(EXTRA_NOTE) as Note Note is a non-null type, so the cast to it triggers a null check. Since you're comparing note to null manually afterwards, probably you meant the safe cast operator, which yields null if the expression is not of the type specified in the right-hand side: note = intent.getSerializableExtra(EXTRA_NOTE) as? Note

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.

Important Internet of Things Links

tuteehub community

Join Our Community Today

Ready to take your education and career to the next level? Register today and join our growing community of learners and professionals.

tuteehub community