如何在安卓系统中获取当前可见的碎片?

3

我有一个名为MainActivity的活动,其中包含四个片段。这些片段的名称分别是A、B、C、D。

Fragment currentVisibleFragment = getSupportFragmentManager().findFragmentByTag(null);

使用上述代码行,我正在尝试获取当前可见的片段,但我无法获取当前可见的片段。

请参考此链接:https://dev59.com/eWox5IYBdhLWcg3wTina#9295085 - undefined
你设置了片段标签吗? - undefined
4个回答

18
private Fragment getVisibleFragment() {
        FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();
        List<Fragment> fragments = fragmentManager.getFragments();
        for (Fragment fragment : fragments) {
            if (fragment != null && fragment.isVisible())
                return fragment;
        }
        return null;
}

使用方法

if (getVisibleFragment() instanceof HomeScreen) {
  // Logic here...
}

如果MainActivity是持有者,而HomeScreen是你其中一个片段。


13
Fragment getCurrentFragment()
{
    Fragment currentFragment = getSupportFragmentManager()
            .findFragmentById(R.id.content_frame);
    return currentFragment;
}

像这样调用函数

Fragment visibleFragment=getCurrentFragment();

调用此函数可以获取当前可见的片段。如果有任何疑问,请随时提出,谢谢 :)


1
R.id.content_frame 是一个视图,用于将片段添加到活动中的吗? - undefined

1
android.support.v4.app.Fragment getCurrentFragment()
{
    Fragment currentFragment = getActivity().getSupportFragmentManager()
            .findFragmentById(R.id.frameLayout);
    return currentFragment;
}

1
尽管这段代码可能(或可能不会)解决问题,但一个好的答案应该总是解释代码的作用以及它如何帮助解决问题。 - undefined

0
public boolean checkFragmentAvailableOrNot1(String fragmentName) 
{
   Fragment fragment=getSupportFragmentManager().findFragmentByTag(fragmentName);
    if (fragment instanceof FragMercado && fragment.isVisible()) 
    {
        return true;
    }
    return false;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接