android - 在 fragment 之间发送数据的最佳方式是什么? ViewModel 或目标参数?

标签 android android-fragments android-navigation android-viewmodel

假设我有两个 fragment :

  • 第一个 fragment
  • 第二个 fragment

用户将在 FirstFragment 中提示一些数据,我想将其中一些数据共享给 SecondFragment。我正在使用 Android 的 ViewModel 和 Jetpack 的导航。哪种是传递数据的最佳方式?

View 模型

对于 viewModel,如果我像这样实例化 viewModel:

MyViewModel viewModel = ViewModelProviders.of(getActivity()).get(MyViewModel.class);

在每个 fragment 中,我可以创建一个名为 setSharedData 的方法并从 FirstFragment 调用它,并创建方法到 getSpecificData 并根据需要在我的 SecondFragment 中调用它们。

目标参数

如果我使用 Jetpack 的导航,我可以使用 destination arguments with safe-args共享数据,将其设置在 Fragment 之间的操作中。

您认为哪个选项最好?您认为这些是更适合不同情况的不同解决方案吗?那么,在什么情况下应该使用什么方法呢?

最佳答案

我认为 View 模型方法在您想多次使用共享数据时很有用,但如果您只需要共享数据来启动,我建议使用目标参数。因为在 View 模型中保存数据会占用内存,所以没有必要。

关于android - 在 fragment 之间发送数据的最佳方式是什么? ViewModel 或目标参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57386603/

相关文章:

java - 如何获取某个月份的所有日期

android - SQLite 数据库的版本号

java - HashMap 删除不起作用

android - 如何在不影响正常碰撞流程的情况下捕捉碰撞

android - 顶部的抽屉导航 - Android

Android 导航组件弹出过渡问题

android-fragments - 通过 NavGraph 将数据从 Fragment 发送到 Main Activity

java - 在调用它之前如何确保另一个线程的处理程序不为空?

android - NestedScrollView 中的 WebView 给出致命信号 6 (SIGABRT) 代码 -6 RenderThread

android - 获取返回堆栈中的最后一个 fragment