首页 > 解决方案 > Realm DB - 复制或更新只能在事务中调用

问题描述

我正在构建一个笔记应用程序。这是添加注释活动,它显示在保存时已成功添加注释,但之后引发 java.lang.IllegalStateException ''' 类 AddNotesActivity : AppCompatActivity() {

private lateinit var titleED:EditText
private lateinit var descriptionED:EditText
private lateinit var saveNotesbutton:Button
private lateinit var realm: Realm

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

    //init views
    titleED = findViewById(R.id.title_Edittext)
    descriptionED = findViewById(R.id.description_Edittext)
    saveNotesbutton = findViewById(R.id.savenotesbutton)
    realm = Realm.getDefaultInstance()
    //set onclick listener
    saveNotesbutton.setOnClickListener(){
        addNotesToDB()
    }

}
private fun addNotesToDB(){
    try {
        realm.beginTransaction()
        val notes = Notes()

        notes.title = titleED.text.toString()
        notes.description = descriptionED.text.toString()
        //notes.id = nextId
        realm.commitTransaction()

        Toast.makeText(this,"Notes added Successfully",Toast.LENGTH_SHORT).show()

        startActivity(Intent(this,MainActivity::class.java))
        finish()

        //copy the transaction and commit
        realm.copyToRealmOrUpdate(notes)

    } catch (e:Exception){

        Toast.makeText(this,"Failed $e",Toast.LENGTH_SHORT).show()

    }

}

} '''

标签: javaandroidkotlinrealm

解决方案


推荐阅读