小编Rar*_*ool的帖子

在片段视图模型之间传递数据

让我先说一句,这更像是一个“结构性”问题,我不是要求任何人编写代码;我只是想弄清楚我应该如何构建我的应用程序。

我正在为我的应用程序使用 Android 的DrawerLayout/ NavigationView。这意味着这MainActivity是我所有片段的宿主。

我目前有三个片段(实际上它更多,但它们或多或少与这三个片段完全一样,只是针对不同的数据集)。

  • 列表片段
  • 细节片段
  • EditFragment(用于添加和编辑)

在我的ListFragment我(惊喜!)项目清单。这是一个(与的生命周期相关联)LiveData上的集合。当一个项目被点击时,我通过接口侦听器将事件传递给。SharedViewModelMainActivityMainActivity

MainActivity然后加载DetailFragment. 在同一个调用中,我加载了SharedViewModel(再次绑定到MainActivity)的实例。我设置SharedViewModel.selectedItem为被点击的项目。然后,在DetailFragmentonCreate函数中,我通过ViewModelProviders.of(activity).get(SharedViewModel::class.java).selectedItem.

在 上DetailFragment,有一个编辑按钮。这或多或少地经历了与上述相同的例程,但EditFragment改为加载。保存编辑/添加的项目后,我SharedViewModel通过MainActivity的接口侦听器添加/替换的集合中的项目。

显然这不是最佳的,原因有几个。一方面,这意味着我至少有 5 组大数据在MainActivity的生命周期内(本质上是应用程序的整个生命周期)。此外,MainActivity由于我必须添加越来越多的函数来处理事件,因此变得一发不可收拾。

想要做的是有,例如,我在一个项目列表ListFragmentViewModel绑定在ListFragment的生命周期。我在 a 上选择的项目DetailFragmentViewModel,我在 上的编辑项目EditFragmentViewModel,等等。

我的问题是我不确定在这种情况下如何正确传递数据。例如,假设我在EditFragment. 我如何将其放入ListFragmentViewModel的项目集合中?ListFragment位于后端堆栈中,因此它的视图模型会在导航回时挂起并且不会重新加载数据,因为它仍然具有之前的集合。这是有道理的,并且可能应该 …

android android-fragments kotlin android-viewmodel

5
推荐指数
1
解决办法
4618
查看次数

找不到"Microsoft.NET.CoreRuntime"

我正在尝试运行我的UWP项目.但是,每当我尝试构建它时,我都会收到错误:

找不到SDK"Microsoft.NET.CoreRuntime,Version = 1.0

无论我打开以前创建的项目还是创建一个全新的项目,都会发生这种情况.我在Windows 10 build 14393上使用14393 SDK.我已经通过了追捕.appxmanifest,.csprojproject.json文件,但我无法找到任何这种任何引用Microsoft.NET.CoreRuntime包.有没有其他人遇到这个或能够解决它?

.net windows-10 visual-studio-2015 uwp

3
推荐指数
1
解决办法
897
查看次数