首页 > 解决方案 > 如何在 ViewPager 中将数据从父 Fragment 通信/发送到子 Fragment?

问题描述

我有一个包含ViewPager.

我想与 that 的其中一个孩子交流ViewPager,但我不知道如何检索 that 的孩子ViewPager。没有明显的方法可以做到这一点。

标签: androidandroid-fragments

解决方案


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'
}

推荐阅读