问题:片段onResume()在ViewPager片段实际可见之前被触发.
例如,我有2个片段与ViewPager和FragmentPagerAdapter.第二个片段仅供授权用户使用,我需要让用户在片段可见时登录(使用警告对话框).
但是ViewPager当第一个片段可见时创建第二个片段,以便缓存第二个片段,并在用户开始滑动时使其可见.
因此,onResume()事件在第二个片段变为可见之前就被触发了.这就是为什么我试图找到一个事件,当第二个片段变得可见时,它会在适当的时刻显示一个对话框.
如何才能做到这一点?
我有一个FragmentActivity,一些片段和一个在后台运行的服务.如果特定片段可见,可以从服务中检查?
为什么不重复:建议的帖子仅适用于viewpager,或者调用onResume时.
我有一个listfragment和一个detailfragment.单击列表项时将打开详细信息片段.我通过隐藏listfragment并显示detailfragment来实现这一目标.当用户返回时,他返回到listfragment.
如何检测用户何时返回我的片段,或者我的片段何时可见?
请注意,我想用.hide()和show(),以保持和我在寻找一个听众或onVisible检查时的片段变成可见的,而不是来检查的方法,如果它是可见的.
我知道StackOverflow中有很多类似的问题,但我的问题却略有不同.
我有嵌套的Fragments层次结构,如下面的结构:
Activity
|
|
AFragment
|
(ViewPager)
| |
| |
BFragment BFragment .....
|
(ViewPager)
| |
| |
CFragment CFragment ...
|
(ViewPager)
| |
| |
DFragment DFragment ...
Run Code Online (Sandbox Code Playgroud)
现在我想知道是否DFragment向用户显示?
我尝试了很多来自StackOverflow的解决方案,但无法取得成功.
我尝试的是:
我尝试setUserVisibleHint()但它返回上面的层次结构中的true多个DFragment,这是一个原因ViewPager
我也试过这些链接:link1,link2,link3等......但没有得到实际的解决方案.
等待帮助.谢谢.
UPDATE
适配器类
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager); …Run Code Online (Sandbox Code Playgroud) java android android-fragments android-view android-viewpager
我有一个有条件地添加到父级的视图.我检查它是否已经添加到父级,不幸的是,它总是返回其可见.
if (findViewById(R.id.bottom_bar).getVisibility == View.Visible)
if (findViewById(R.id.bottom_bar).isShown())
Run Code Online (Sandbox Code Playgroud)
true即使从未添加视图也返回ans不可见.
我有一个包含 3 个片段(不是标签)的活动。我有几个操作栏项目,当存在某个片段时,我想隐藏它们。我该怎么办?