如何在另一个片段中访问和使用一个片段的按钮?

Posted

技术标签:

【中文标题】如何在另一个片段中访问和使用一个片段的按钮?【英文标题】:How can I access and use button of one fragment inside another fragment? 【发布时间】:2021-12-15 01:03:54 【问题描述】:

我有一个片段,HomeFragment()。在这个片段中,我有TabLayoutViewPager2。在viewPager2 中还有另一个名为ordersFragment() 的片段。是否可以点击HomeFragment() 中的任何按钮并在 ordersFragment()` 中显示一些文本?

【问题讨论】:

HomeFragment 托管 TabLayout 或 viewPager2 内的片段? 是 HomeFragment 托管 TabLayout 如果 HomeFragment 托管 tablayout 和按钮,它也应该能够访问 ordersFragment 对象。 在 HomeFragment(即托管)中,顶部有一个过滤器图标,因此希望在单击放置在 HomeFragment() 中的过滤器图标时显示和隐藏 ordersFragment() 内的搜索栏跨度> 如何指导我 【参考方案1】:

我真的建议使用现代方法,即ViewModels component。视图模型基本上是一个保存您的数据和状态的类,该组件使您的活动中的每个片段都可以获取相同的视图模型实例,因此它们都在查看相同的东西

这样,一个片段可以为某些数据设置一个值,而另一个片段observes 它并在有更新时得到通知。两个片段都不需要彼此了解,它们只是与视图模型交谈并观察他们需要担心的事情。有这种事的例子in the docs

可以自己协调所有这些东西(例如,通过父级Activity 并与另一个片段进行对话)但是您添加了很多工作和样板文件@987654326 @s 照顾你。它还可以帮助您将 UI(显示内容、处理用户交互)与业务逻辑(使用该数据做某事、更新应用程序状态)分开。知道这绝对是一件好事,让围绕您的应用进行交流变得更加容易

【讨论】:

【参考方案2】:

最佳实践是使用在一个片段中实现的回调并在另一个片段中调用它。

如果您使用的是 kotlin,请检查此..

link (我不想在这里复制粘贴相同的代码)

【讨论】:

但是这个回调是在片段和活动之间应用的。我们可以在两个片段之间应用相同的回调方法吗? 是的,可以在多个片段中使用,但如果片段处于活动状态,则只有回调会起作用,否则它将不起作用。

以上是关于如何在另一个片段中访问和使用一个片段的按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个片段中使用 YouTubePlayerFragment 加载 YouTubePlayer? (安卓)

滚动时在另一个片段视频视图中重叠一个片段的视频拇指

根据在 Spinner 中选择的数字,相同的片段应该出现在另一个之下。如何?

如何在另一个片段内膨胀另一个布局

如何在另一个 Fragment 中更新 ListView?

如何将捆绑从一个活动传递到放置在另一个活动中的片段?