android - 如何在 ViewPager 中将数据从父 Fragment 通信/发送到子 Fragment?
问题描述
我有一个包含ViewPager
.
我想与 that 的其中一个孩子交流ViewPager
,但我不知道如何检索 that 的孩子ViewPager
。没有明显的方法可以做到这一点。
解决方案
updateFragments()
执行搜索操作后调用以下方法。如果要将过滤器应用于两个片段,则只需删除if-else
块并执行当前在if-else
块内的两个操作。
- Kotlin 解决方案
HomeFragment.kt
private fun updateFragments(filterText:String) {
if (viewpager?.currentItem == 0)
((viewpager?.adapter?.instantiateItem(viewpager, 0)) as FragmentA).updateFragment(filterText)
else
((viewpager?.adapter?.instantiateItem(viewpager, 1)) as FragmentB).updateFragment(filterText)
}
FragmentA.kt 和 FragmentB.kt
fun updateFragment(filterText: String) {
// Perform what you want to do with the 'filterText'
}
- Java 解决方案
HomeFragment.java
private void updateFragments(String filterText) {
if (viewpager == null) return // some error occurred
if (viewpager.getCurrentItem() == 0)
((FragmentA)(viewpager.getAdapter().instantiateItem(viewpager, 0))).updateFragment(filterText)
else
((FragmentB)(viewpager.getAdapter().instantiateItem(viewpager, 1))).updateFragment(filterText)
}
片段A.java & 片段B.java
public void updateFragment(String filterText) {
// Perform what you want to do with the 'filterText'
}
推荐阅读
- php - 无法为 php 7.4.1 安装 php-devel
- redirect - IIS RewriteMaps 到新的 URL,包括 WWW 和 HTTPS
- java - 如何将java中的图像字节数组byte[]转换为Qt中的QImage?
- swiftui - SwiftUI 中的 ForEach 警告问题
- php - Symfony 4 自动装配排除忽略子文件夹
- android - 安卓数组列表
存储未恢复到其保存的排序顺序 - riscv - 如何将 M 文件转换为 RISC-V 汇编代码?
- javascript - Node + react js在发布请求中增加上传文件大小
- php - 检查 id 是否包含在 SQL 和 PHP 的列表中
- sapui5 - 将 SAPUI5 Fiori 应用程序从 Neo 迁移到 Cloud Foundry