首页 > 解决方案 > 类型不匹配,必需:上下文,找到:单位

问题描述

我正在尝试设置一个简单的数据库,我的部分代码正在抛出这个错误,我不确定如何修复,特别是以下行:

 NotesDatabase.getDatabase(getDatabase(applicationContext).noteDao().insertNote(note))

产生:类型不匹配,必需:上下文,找到:单位!

我应该怎么做才能解决这个问题?

整个代码:

package com.example.notas.activities

import android.os.AsyncTask
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.EditText
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import com.example.notas.R
import com.example.notas.database.NotesDatabase
import com.example.notas.database.NotesDatabase.getDatabase
import com.example.notas.entities.Note
import java.text.SimpleDateFormat
import java.util.*

class CreateNoteActivity : AppCompatActivity() {
    lateinit var inputNoteTitle: EditText
    lateinit var inputNoteSubtitle: EditText
    lateinit var inputNoteText: EditText
    lateinit var textDateTime: TextView

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_create_note)

    val imageBack: ImageView = findViewById(R.id.imageBack)
    imageBack.setOnClickListener(View.OnClickListener {

        onBackPressed()

    })

    inputNoteTitle = findViewById(R.id.inputNoteTitle)
    inputNoteSubtitle = findViewById(R.id.inputNoteSubtitle)
    inputNoteText = findViewById(R.id.inputNote)
    textDateTime = findViewById(R.id.textDateTime)

    textDateTime.setText(
        SimpleDateFormat("EEEE, dd, MMMM yyyy HM:mm a", Locale.getDefault()).format(Date())
    );
}

fun saveNote() {
    if (inputNoteTitle.text.toString().trim().isEmpty()) {
        Toast.makeText(this, "Note title can't be empty!", Toast.LENGTH_SHORT).show()
        return
    } else if (inputNoteSubtitle.text.toString().trim().isEmpty()
        && inputNoteText.text.toString().trim().isEmpty()
    ) {
        Toast.makeText(this, "Note can't be empty!", Toast.LENGTH_SHORT).show()
        return
    }

    val note: Note = Note()
    note.title = inputNoteTitle.text.toString()
    note.subtitle = inputNoteSubtitle.text.toString()
    note.noteText = inputNoteText.text.toString()
    note.dateTime = textDateTime.text.toString()


    class SaveNoteTask : AsyncTask<Void?, Void?, Void?>() {

        override fun doInBackground(vararg voids: Void?): Void? {
            NotesDatabase.getDatabase(getDatabase(applicationContext).noteDao().insertNote(note))
            return null
        }

        override fun onPostExecute(result: Void?) {
            super.onPostExecute(result)
        }
    }

标签: javaandroidkotlin

解决方案


根据您的错误,该方法需要上下文,并且您正在向它传递一个方法。尝试如下传递上下文 -

NotesDatabase.getDatabase(applicationContext)

推荐阅读