当前位置: 首页 > 知识库问答 >
问题:

ViewPager在加载第一个片段后调用setUserVisibleHint

严项明
2023-03-14

在我的应用程序中,我有一个ViewPager,里面有很多可滑动的标签,里面有碎片。我使用SetUserVisibleHint方法检测片段何时出现在屏幕上。当用户在选项卡之间滑动时,这非常有效,但它在第一次加载时不起作用。要运行该方法中的代码,我必须向左滑动,然后返回到第一个片段,因为SetUserVisibleHint方法是在OnCreateView方法之前调用的。

你有任何想法,我如何运行这段代码后,第一个片段是可见的吗?viewpager中有方法吗?

共有1个答案

魏威
2023-03-14

您不能(也不应该)依赖于SetUserVisibleHint。相反,您应该使用ViewPager.OnPageChangelistener获取页面可见时的回调。例如。

viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
    @Override
    public void onPageSelected(int position) {
        // do your work
    } 
});

注意:如果不需要监听所有回调,可以使用viewpager.simpleonPageChangelistener

SetOnPageChangelistener方法现在不推荐使用,请改用AddOnPageChangelistener

viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
    @Override
    public void onPageSelected(int position) {
        // do your work
    } 
});
 类似资料:
  • 我使用了和。 但它一次加载两个页面。 有什么方法可以在viewpager中只加载一个页面吗?

  • 我有一个有4个选项卡的ViewPager片段,在第4个选项卡中有另一个有3个选项卡的ViewPager,这样,如果每当我切换我的topviewPagerTab(一个有4个选项卡)时,就不会调用sub ViewPager(有3个选项卡)中的setUserVisiblehint片段。

  • 我的中有10个选项卡。打开活动后,第一个片段就会显示出来,但下一个片段中的方法(AsyncTask)会被调用。如果我转到下一个选项卡,比如第3个选项卡,那么将调用第4个中的方法,依此类推。 我不理解这种行为。请救命!

  • 我正在使用MVVMCROSS6与Xamarin Android。刚刚升级到MVX6.2,但问题仍然存在。我正在跟随样例游乐场加载视页。我有一个活动持有3个选项卡的视图页。在活动的viewmodel中,将选项卡添加到ViewPager中: 在playground示例中,当通过导航到那些选项卡的viewmodel构建viewpager时,不会创建选项卡片段。片段只有在显示时才会被创建。 对于我的第二和

  • 我有一个有3个选项卡的ViewPager。根据我所看到的情况,当容器活动开始时,前两个片段将处于恢复状态。我还注意到,只有并排的两个片段被恢复,第三个被停止。我遇到的问题是,我从网络加载数据用于第一个片段,并将自定义对象存储在一个ArrayList中,这很正常,但当我导航到第三个片段时,数据会随着第一个片段进入停止状态而丢失。因此,当从第三个片段导航回第一个片段时,ArrayList就会为空(我在

  • 嗨,我在主片段内使用带有碎片网的viewPager。我试图从画廊或相机中获取图像到位图,但在选择照片并启动ActivityForResult后,它不会在onActivityResult中捕获... 以下是我如何调用startActivityForResult: 这是我的onActivityResult: 有什么想法吗?