Fragmentation icon indicating copy to clipboard operation
Fragmentation copied to clipboard

fragment返回之后,页面为空,使用的是onLazyInitView加载数据,如果放到onCreateView中没有问题

Open longlyboyhe opened this issue 7 years ago • 9 comments

@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();
}

longlyboyhe avatar Jun 22 '18 08:06 longlyboyhe

是fragment跳转到一个新的Activity,然后再返回

longlyboyhe avatar Jun 22 '18 08:06 longlyboyhe

我这边也出现了相同的问题,类似仿知乎布局,其中一个tab需要登录后才能访问,所以点击这个tab会先跳转到LoginActivity进行登录,登录成功后调用MainActivity内的startActivityForResult再调用showHideFragment显示目标tab,但目标tab的onSupportVisible和onLazyInitView都不会调用。

我直接拿作者你的demo里的仿知乎试了下 也同样有这个问题,以下是demo地址:https://github.com/tzizi5566/Fragmentation-master

还请帮忙看看是什么原因,谢谢了。

tzizi5566 avatar Jun 23 '18 14:06 tzizi5566

我的使用场景和楼上基本一样,麻烦看一下什么原因

longlyboyhe avatar Jun 25 '18 03:06 longlyboyhe

onNewIntent回掉 TabLayout.getTabAt(select).select();也不会执行onLazyInitView

Basakerone avatar Jun 25 '18 03:06 Basakerone

@longlyboyhe @tzizi5566 现在代替方法就是延迟200毫秒去切换tab即可,具体没看。你们可以先这样用着。等作者解决即可

Basakerone avatar Jun 25 '18 03:06 Basakerone

onLazyInitView ()只会在第一次Fragment可见时回调

@tzizi5566 你的Demo这里复写的应该是onActivityResult() 而不是复写startActivityForResult() 你修正下就好了

@Basakerone tzizi5566 的Demo我纠正了下,发现工作正常

YoKeyword avatar Jul 07 '18 05:07 YoKeyword

@YoKeyword 作者你好 Demo里的代码是我写错了,使用startActivityForResult和onActivityResult的方式的确没有问题。 我这边实际项目里使用了一个验证是否登录的库delayActionDemo 整个流程走下来目标Fragment的onLazyInitView方法没有调用 这是我更新的 Demo 请看下是我使用这个库的问题还是哪里使用不当造成的 谢谢

tzizi5566 avatar Jul 07 '18 07:07 tzizi5566

我在首页fragment中启动LoginActivity ,登录成功后,用eventbus发送event。在MainActivity中接受,用 mBottomBar.setCurrentItem(postion);切换tab。出现白页。延迟200毫秒后切换没有问题。是不是onLazyInitView()执行有延迟?

luyun181 avatar Jul 18 '18 09:07 luyun181

@luyun181 是的,onLazyInitView()的执行 是post到安卓消息队列里的

YoKeyword avatar Aug 14 '18 14:08 YoKeyword