在 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开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment
Android开发之漫漫长途 XIII——Fragment最佳实践