java - 类型不匹配,必需:上下文,找到:单位
问题描述
我正在尝试设置一个简单的数据库,我的部分代码正在抛出这个错误,我不确定如何修复,特别是以下行:
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)
}
}
解决方案
根据您的错误,该方法需要上下文,并且您正在向它传递一个方法。尝试如下传递上下文 -
NotesDatabase.getDatabase(applicationContext)
推荐阅读
- symfony4 - 为自定义路由使用自定义方法控制器
- python - 我想用python制作gui以在RDS MySQL DB中显示表
- javascript - 未捕获的 SyntaxError:角度 8 中的意外标记“<”
- python-3.x - 如何使这个 tkinter 输出看起来更整洁?
- excel - VBA 代码适用于新工作簿,但不是我希望它工作的那个
- if-statement - 如何使用增长和过滤功能根据 ID 和缺失值在 Google 表格中创建动态范围?
- python - 如何将大小为 N 的列表尽可能均匀地分成 K 组
- react-native-gifted-chat - 是否可以禁用 react-native-gifted-chat 中的文本输入
- spring-boot - IDEA 中的基本“Hello World”Spring Boot 应用程序不起作用
- c# - 上传带有附加信息的文件(Angular 8 到 C# Core 3)