何时应调用Fragment的onActivityCreated? [英] When should a Fragment's onActivityCreated be called?

查看:31
本文介绍了何时应调用Fragment的onActivityCreated?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在ViewPager中有一些片段,并且发现片段的 onActivityCreated onCreateView 都在我期望的页面上被调用.

I have a few Fragments in a ViewPager, and I've found the Fragment's onActivityCreated and onCreateView are both being called on the page before I expect.

例如,当ViewPager从页面2过渡到页面3时,则将调用页面4的 onCreateView onActivityCreated 上的Fragment.

For example, when the ViewPager transitions from page 2 to 3, then the Fragment at page 4's onCreateView and onActivityCreated are being called.

我打算在 onActivityCreated 中发起网络请求,但它启动一个屏幕的时间过早.根据 Android文档 onActivityCreated 被称为创建片段的活动并实例化该片段的视图层次结构时".这使我相信我正确使用了该方法.

I'm intending to initiate a network request in onActivityCreated but it is starting one screen too soon. According to the Android docs, onActivityCreated is called "when the fragment's activity has been created and this fragment's view hierarchy instantiated." which leads me to believe I'm using the method correctly.

推荐答案

ViewPager加载下一个片段以在片段之间进行平滑过渡,这就是为什么下一个片段的 onCreate() onCreateView() onResume()被调用.因此,在您的viewPager上添加 onPageChangeListener :

ViewPager loads the next fragment for smooth transition between fragments, and that's why your next fragment's onCreate(), onCreateView() and onResume() is getting called. So, add onPageChangeListener on your viewPager like:

yourViewPager.addOnPageChangeListener(new OnPageChangeListener{
    @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
        @Override
        public void onPageSelected(int position) {
        switch(position){
            //your code for network operation
        }
    }
    @Override
        public void onPageScrollStateChanged(int state) {}

});     

这篇关于何时应调用Fragment的onActivityCreated?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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