代码之家  ›  专栏  ›  技术社区  ›  Jiten Basnet

使用mvvm从不同活动获取编辑文本值并存储在单个viewmodel中

  •  0
  • Jiten Basnet  · 技术社区  · 5 年前

    现在我正在添加表行,其中有两个空文本,如下所示。但我不认为这是解决办法。可能是我遗漏了什么。

    Table(
        children:[
        TableRow(
        children: [
        Text('Investment needed'),
        Text(proposalDetailsData.maxInvestment) ]),
    
     TableRow(
        children: [
        Text(''),
        Text('')
        ]),
        ]);
    
        TableRow(
        children: [
        Text('Minimum Investment'),
        Text(proposalDetailsData.investmentRaised)
        ]),
        ]);
    
    3 回复  |  直到 5 年前
        1
  •  1
  •   Róbert Nagy    5 年前

    因为每个 Activity 有它自己的 ViewModelStore 而且每一个 视图模型存储 创建 ViewModel . 你只能用 ViewModelFactory 作为一个单一的工厂 create 方法将始终返回相同的对象。

    我绝对会避免这样做,也不会违背框架,选择以下选项之一:

    1) 要保存、保留虚拟机上的数据,可以使用 单例存储库 数据源

    2) 如果你坚持要一个 VM 您可以使用一个活动,一个viewmodel和三个片段。(IMO这是最好的选择)

        2
  •  0
  •   Bonnie7    5 年前

    您可以使用intent将值从活动a发送到活动b。

        3
  •  0
  •   AvidRP    5 年前

    这个问题之前在google samples repo中已经提出过: https://github.com/googlesamples/android-architecture-components/issues/29

    该线程中提供的一个潜在解决方案是 https://github.com/googlesamples/android-architecture-components/issues/29#issuecomment-351620004

    理想情况下,如果您使用一个主活动,而只将片段用于其他所有活动,那么共享同一个viewmodel实例就容易得多。

    希望能帮上忙!