fragment返回之后,页面为空,使用的是onLazyInitView加载数据,如果放到onCreateView中没有问题
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mRootView = inflater.inflate(R.layout.home_fragment_layout, container, false); mContext = getActivity(); return mRootView; }
@Override
public void onLazyInitView(@Nullable Bundle savedInstanceState) {
super.onLazyInitView(savedInstanceState);
initData();
setRefresh();
}
是fragment跳转到一个新的Activity,然后再返回
我这边也出现了相同的问题,类似仿知乎布局,其中一个tab需要登录后才能访问,所以点击这个tab会先跳转到LoginActivity进行登录,登录成功后调用MainActivity内的startActivityForResult再调用showHideFragment显示目标tab,但目标tab的onSupportVisible和onLazyInitView都不会调用。
我直接拿作者你的demo里的仿知乎试了下 也同样有这个问题,以下是demo地址:https://github.com/tzizi5566/Fragmentation-master
还请帮忙看看是什么原因,谢谢了。
我的使用场景和楼上基本一样,麻烦看一下什么原因
onNewIntent回掉 TabLayout.getTabAt(select).select();也不会执行onLazyInitView
@longlyboyhe @tzizi5566 现在代替方法就是延迟200毫秒去切换tab即可,具体没看。你们可以先这样用着。等作者解决即可
onLazyInitView ()只会在第一次Fragment可见时回调
@tzizi5566 你的Demo这里复写的应该是onActivityResult() 而不是复写startActivityForResult() 你修正下就好了
@Basakerone tzizi5566 的Demo我纠正了下,发现工作正常
@YoKeyword 作者你好 Demo里的代码是我写错了,使用startActivityForResult和onActivityResult的方式的确没有问题。 我这边实际项目里使用了一个验证是否登录的库delayActionDemo 整个流程走下来目标Fragment的onLazyInitView方法没有调用 这是我更新的 Demo 请看下是我使用这个库的问题还是哪里使用不当造成的 谢谢
我在首页fragment中启动LoginActivity ,登录成功后,用eventbus发送event。在MainActivity中接受,用 mBottomBar.setCurrentItem(postion);切换tab。出现白页。延迟200毫秒后切换没有问题。是不是onLazyInitView()执行有延迟?
@luyun181 是的,onLazyInitView()的执行 是post到安卓消息队列里的