FlutterFragment 踩坑记

欢迎转载,并标明来源juejin.im/post/5cc155…

今天尝试了在原生android项目中导入flutter模块,但在使用FragmentManager切换FlutterFragment时发生了“Platform view is not attached”的异常。

(我的demo是一个原生fragment,一个FlutterFragment)


后来查看FlutterView代码时发现其中的原因,在我们创建FlutterView

Flutter.createView(getActivity(), getLifecycle(), mRoute)
复制代码

绑定了外部的FlutterFragment的生命周期,当切换其他的Framgment时,此FlutterFragment自然调用了ondestroy方法,而FlutterView也通过getLifecycle监听到了也调用了自身的destroy,并且销毁了寄生的外部mNativeView。由于mNativeView为空,所以导致异常

public void destroy() {

    if (this.isAttached()) {
        this.getHolder().removeCallback(this.mSurfaceCallback);
        this.mNativeView.destroy();
        this.mNativeView = null;
    }
}复制代码

最根本的原因是我的FlutterFragment没有触发onCreateView,导致Flutter.createView(getActivity(), getLifecycle(), mRoute)

没有执行。



转载于:https://juejin.im/post/5cc155cce51d456e7079f259

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值