【问题标题】:Android Room with Jetpack Compose - Update LiveData after add a item in another activity带有 Jetpack Compose 的 Android Room - 在另一个活动中添加项目后更新 LiveData
【发布时间】:2021-09-30 11:46:26
【问题描述】:

我在 NewContactActivity 上添加一个新联系人,并在数据库上完成插入并关闭活动后,但这不会更新联系人列表

主活动:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            AppTheme {
                val contatoViewModel: ContatoViewModel = viewModel(factory = ContatoViewModelFactory(LocalContext.current.applicationContext as Application))
                val contatos = contatoViewModel.readAllData.observeAsState(listOf()).value
                val novoContatoLaunch = rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) {
                    run {
                        when(it.resultCode) {
                            RESULT_OK -> {
                                Toast.makeText(this@MainActivity, "Contato Salvo!", Toast.LENGTH_LONG).show()
                                //TODO I need to update the contatos here
                            }
                        }
                    }
                }
                MainView(contatos) {
                    novoContatoLaunch.launch(Intent(this@MainActivity, NovoContatoActivity::class.java))
                }
            }
        }
    }

NewContactActivity

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            AppTheme {
                val contatoViewModel: ContatoViewModel = viewModel(factory = ContatoViewModelFactory(LocalContext.current.applicationContext as Application))

                NovoContatoView {
                    contatoViewModel.addContato(it)
                    setResult(RESULT_OK)
                    finish()
                }
            }
        }
    }

【问题讨论】:

    标签: android android-room android-jetpack-compose


    【解决方案1】:

    似乎答案将在您的ContatoViewModel 中。如果您通过房间库使用LiveData,这应该会在数据库更改后自动更新。如果没有,只需调用ContatoViewModel 中的某个方法,该方法将从数据库中读取更改并更新底层实时数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      • 2022-12-06
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      相关资源
      最近更新 更多