#java #android #kotlin
Вопрос:
Я пытаюсь настроить простую базу данных, и часть моего кода выдает эту ошибку, которую я не совсем уверен в том, как исправить, в частности, следующая строка:
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()
amp;amp; 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)
}
}
Комментарии:
1. Покажите код для
NotesDatabase
Ответ №1:
В соответствии с вашей ошибкой метод нуждается в контексте, и вы передаете ему метод. Попробуйте передать контекст, как показано ниже —
NotesDatabase.getDatabase(applicationContext)
Комментарии:
1. Большое спасибо!