问题描述
我知道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 true
for multiple DFragment
in above hierarchy which is a cause of ViewPager
我也试过这些链接:,,等等......但没有得到实际的解决方案。
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()
将返回 true
。
这篇关于检查片段当前是否可见的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!