前提・実現したいこと
最近仕事で、realmを実装することになったのですが、以下のコードだとアプリが落ちてしまいます。まだkotlin初心者で(プログラミング自体初心者です。。)色々調べてはいるのですが、中々解決には至りません。どうかご教授お願い致します。
簡単なメモアプリを製作しようと思っております。
発生している問題・エラーメッセージ
エラーは発生していません
該当のソースコード
MainActivity
1 2package com.example.memo 3 4import android.os.Bundle 5import android.widget.Button 6import android.widget.EditText 7import androidx.appcompat.app.AppCompatActivity 8import androidx.recyclerview.widget.RecyclerView 9import io.realm.Realm 10import io.realm.RealmConfiguration 11 12class MainActivity : AppCompatActivity() { 13 14 private lateinit var adapter: MemoListAdapter 15 16 override fun onCreate(savedInstanceState: Bundle?) { 17 super.onCreate(savedInstanceState) 18 setContentView(R.layout.activity_main) 19 20 adapter = MemoListAdapter() 21 val recyclerView = findViewById<RecyclerView>(R.id.memo_List) 22 recyclerView.adapter = adapter 23 24 val editText = findViewById<EditText>(R.id.memo_edit_text) 25 val addButton = findViewById<Button>(R.id.add_button) 26 27 28 29 addButton.setOnClickListener { 30 val text = editText.text.toString() 31 if (text.isEmpty()){ 32 return@setOnClickListener 33 } 34 val realm = Realm.getDefaultInstance() 35 36 realm.executeTransaction { 37 val memo = it.createObject(Memo::class.java) 38 39 memo.name = editText.text.toString() 40 41 it.copyFromRealm(memo) 42 } 43 44 editText.text.clear() 45 } 46 } 47}
Memo
1package com.example.memo 2 3import io.realm.RealmObject 4import io.realm.annotations.PrimaryKey 5import io.realm.annotations.Required 6 7open class Memo : RealmObject(){ 8 @PrimaryKey 9 open var id : Int? = null 10 @Required 11 open var name = "" 12}
MemoListAdapter
1package com.example.memo 2 3import android.view.LayoutInflater 4import android.view.View 5import android.view.ViewGroup 6import android.widget.TextView 7import androidx.recyclerview.widget.RecyclerView 8 9class MemoListAdapter : RecyclerView.Adapter<MemoListAdapter.MemoViewHolder>(){ 10 val memoList = mutableListOf<String>() 11 12 override fun onCreateViewHolder( 13 parent: ViewGroup, 14 viewType: Int 15 ): MemoListAdapter.MemoViewHolder { 16 val view = LayoutInflater.from(parent.context).inflate(R.layout.item_memo,parent,false) 17 return MemoViewHolder(view) 18 } 19 20 override fun onBindViewHolder(holder: MemoViewHolder, position: Int) { 21 val textView = holder.itemView.findViewById<TextView>(R.id.memo_text_view) 22 textView.text = memoList[position] 23 } 24 25 override fun getItemCount(): Int = memoList.size 26 27 class MemoViewHolder(view: View): RecyclerView.ViewHolder(view) 28 29}
memoApplication
1package com.example.memo 2 3import android.app.Application 4import io.realm.Realm 5import io.realm.RealmConfiguration 6 7class memoApplication : Application(){ 8 override fun onCreate() { 9 super.onCreate() 10 Realm.init(this) 11 val realm = Realm.getDefaultInstance() 12 13 val realmConfig = RealmConfiguration.Builder() 14 .deleteRealmIfMigrationNeeded() 15 .build() 16 Realm.setDefaultConfiguration(realmConfig) 17 } 18}
試したこと
val realm = Realm.getDefaultInstance()
↑を削除すると起動が出来ます。
おそらく上記のコードがおかしいのかなとは考えているのですが、解決方法が分かりません。。
補足情報(FW/ツールのバージョンなど)
Android Studio Arctic | 2020.3.1 Patch 1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。