检查片段当前是否可见 [英] Check if fragment is currently visible or no

查看:200
本文介绍了检查片段当前是否可见的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道StackOverflow中有很多类似的问题,但我的问题没什么不同。

I know there are lots of similar questions in StackOverflow but my question is little different.

我有嵌套的Fragments层次结构,如下面的结构:

I have nested hierarchy of Fragments like in below structure:

                                  Activity
                                     |
                                     |
                                 AFragment
                                     |
                                (ViewPager)
                                 |       |         
                                 |       |         
                         BFragment       BFragment  .....
                            |                       
                       (ViewPager)                       
                        |       |                         
                        |       |                         
                 CFragment     CFragment  ...
                     |
                (ViewPager)                       
                  |     |                              
                  |     |                        
           DFragment   DFragment ...

现在我想知道是否 DFragment 是否向用户显示?

Now i want to know that whether DFragment is showing to user or not?

我尝试了很多来自StackOverflow的解决方案,但无法成功。

I tried lots of solution from StackOverflow but couldn't get sucess.

我尝试的是:

我试过 setUserVisibleHint()但它在上面的层次结构中为多个 DFragment 返回 true ,这是一个原因 ViewPager

I tried setUserVisibleHint() but it returns truefor multiple DFragment in above hierarchy which is a cause of ViewPager

我也试过这些链接: link1 link2 link3 等等......但没有得到实际的解决方案。

I also tried from these links: link1, link2, link3 and so on... but did not got actual solution.

等待帮助。谢谢。

更新

适配器类

class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }


推荐答案

你是否可以检查查看该设备屏幕上是否显示该片段已膨胀:

You can check, whether the View that fragment inflated is visible on the device's screen:



    Fragment fragment = ... // retrieve from `ViewPager`'s adapter.
    View fragmentRootView = fragment.getView();
    if (fragmentRootView != null && fragmentRootView.getGlobalVisibleRect(new Rect())) {
        // fragment is visible
    } else {
        // fragment is not visible
    }

getGlobalVisibleRect() <如果部分视图在根级别可见,则/ a>将返回 true

这篇关于检查片段当前是否可见的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆