在 Android 中的两个 Fragment 之间传递数据都有哪些不同的方式? [复制]

Posted

技术标签:

【中文标题】在 Android 中的两个 Fragment 之间传递数据都有哪些不同的方式? [复制]【英文标题】:What are the different ways to pass the data between two Fragments in Android? [duplicate]在 Android 中的两个 Fragment 之间传递数据有哪些不同的方式? [复制] 【发布时间】:2021-11-12 16:50:47 【问题描述】:

我想知道有多少种方法可以在两个片段之间传递数据,比如说从一个片段中的编辑文本到另一个片段中的文本视图。

我知道两种方法:

    第一个是使用意图。 二是在导航中使用参数。

是否有更多方法可以在两个片段之间发送数据,哪一种更好更高效,为什么?

如果有人对此有任何了解,请告诉。

【问题讨论】:

Intents 用于活动。片段根本不使用意图;真的只有一种方法。 您可以使用一些存储,例如数据库或共享首选项:将数据保存在第一个片段中并在第二个片段中加载它 您可以使用共享的ViewModel 来存储其他Fragment 可以访问的数据。与其说是“传递数据”,不如说是把它放在一个可以检索的地方(或者如果你使用观察者模式,比如LiveData,如果两个片段都处于活动状态,那么观察者会看到更新发生)。如果您需要保持状态(就像 Navigation 会发生的那样),您可以使用 SavedStateHandle: developer.android.com/topic/libraries/architecture/… developer.android.com/guide/fragments/communicate 【参考方案1】:

根据我个人的经验,我认为有6种方法:

    导航参数 将状态存储在父 Activity 中,并通过回调或 getActivity 获取。 使用一些本地存储,例如共享首选项或房间。 将应用程序状态存储在单例中并从不同的片段访问它。 (我认为没有过度工程的最好的)在片段之间有一个共享的视图模型 (不推荐,因为很容易导致崩溃)通过第二个片段的构造函数传递参数

【讨论】:

以上是关于在 Android 中的两个 Fragment 之间传递数据都有哪些不同的方式? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Android - V之ViewPager的使用

Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment

Android开发之漫漫长途 XIII——Fragment最佳实践

android activity中的变量怎么传值给fragment

一起学Android之Fragment

Android安卓开发之activity如何传值到fragment,activity与fragment传值