日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【错误记录】Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )

發(fā)布時(shí)間:2025/6/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【错误记录】Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() ) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、 報(bào)錯(cuò)信息
  • 二、 解決方案





一、 報(bào)錯(cuò)信息



在 Flutter 混合開(kāi)發(fā)中 , 開(kāi)發(fā) Android 與 Flutter 信息交互功能 ;

創(chuàng)建 BasicMessageChannel 通道 , 其構(gòu)造函數(shù)如下 :

public BasicMessageChannel(@NonNull BinaryMessenger messenger, @NonNull String name, @NonNull MessageCodec<T> codec) {

首先要獲取 BinaryMessenger 實(shí)例對(duì)象 ;

BinaryMessenger 實(shí)例對(duì)象需要從 FlutterEngine 中獲取 ;


獲取流程如下 :

首先 , 創(chuàng)建 FlutterFragment , 這是要嵌入到 Android 的 Activity 界面中的 Flutter 界面 ;

mFlutterFragment = FlutterFragment.withNewEngine().initialRoute("嵌入 FlutterFragment").build();

然后 , 顯示該 Flutter 頁(yè)面 , 這里直接將 Flutter 頁(yè)面的 Fragment 設(shè)置到 Activity 中即可 ;

fragmentTransaction.replace(R.id.frame, mFlutterFragment); fragmentTransaction.commit();

最后 , 獲取 FlutterEngine , 但是在此處報(bào)錯(cuò) ;

mFlutterFragment.getFlutterEngine() ;

報(bào)錯(cuò)信息如下 :

2021-08-30 11:08:39.318 32433-32433/com.example.flutter_native E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.example.flutter_native, PID: 32433java.lang.NullPointerException: Attempt to invoke virtual method 'io.flutter.embedding.engine.FlutterEngine io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.getFlutterEngine()' on a null object referenceat io.flutter.embedding.android.FlutterFragment.getFlutterEngine(FlutterFragment.java:986)at com.example.flutter_native.MainActivity.initEventChannel(MainActivity.java:104)at com.example.flutter_native.MainActivity.access$100(MainActivity.java:21)at com.example.flutter_native.MainActivity$1.onClick(MainActivity.java:63)at android.view.View.performClick(View.java:6597)at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)at android.view.View.performClickInternal(View.java:6574)at android.view.View.access$3100(View.java:778)at android.view.View$PerformClick.run(View.java:25885)at android.os.Handler.handleCallback(Handler.java:873)at android.os.Handler.dispatchMessage(Handler.java:99)at android.os.Looper.loop(Looper.java:193)at android.app.ActivityThread.main(ActivityThread.java:6718)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)





二、 解決方案



報(bào)錯(cuò)位置在 FlutterFragment 中 , 在調(diào)用 getFlutterEngine 方法時(shí)報(bào)錯(cuò) , getFlutterEngine 方法相關(guān)代碼如下 :

public class FlutterFragment extends Fragmentimplements FlutterActivityAndFragmentDelegate.Host, ComponentCallbacks2 {// Delegate that runs all lifecycle and OS hook logic that is common between// FlutterActivity and FlutterFragment. See the FlutterActivityAndFragmentDelegate// implementation for details about why it exists.@VisibleForTesting /* package */ FlutterActivityAndFragmentDelegate delegate;/*** Hook for subclasses to obtain a reference to the {@link FlutterEngine} that is owned by this* {@code FlutterActivity}.*/@Nullablepublic FlutterEngine getFlutterEngine() {return delegate.getFlutterEngine();} }

報(bào)錯(cuò)信息是

java.lang.NullPointerException: Attempt to invoke virtual method 'io.flutter.embedding.engine.FlutterEngine io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.getFlutterEngine()' on a null object reference

FlutterActivityAndFragmentDelegate delegate 為空 ;

在 FlutterFragment 顯示成功后 , 該 delegate 才會(huì)進(jìn)行初始化 ;

在 Android 中嵌入 Flutter 頁(yè)面 , 比較慢 , 大概耗時(shí) 1 ~ 3 秒左右 ;

也就是說(shuō)在 Flutter 頁(yè)面顯示成功之前 , FlutterActivityAndFragmentDelegate delegate 值都是 null , 此時(shí)通過(guò) Fragment 獲取 FlutterEngine() , 都會(huì)報(bào)空指針異常 ;


在啟動(dòng) Flutter 頁(yè)面后 , 延遲 5 秒 , 再進(jìn)行初始化 , 即可解決上述問(wèn)題 ;

mFlutterFragment = FlutterFragment.withNewEngine().initialRoute("嵌入 FlutterFragment").build();Log.i(TAG, "mFlutterFragment : " + mFlutterFragment);// 創(chuàng)建 FlutterFragment fragmentTransaction.replace(R.id.frame, mFlutterFragment); fragmentTransaction.commit();//initEventChannel();new Thread(){@Overridepublic void run() {try {sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}initEventChannel();Log.i(TAG, "mFlutterFragment : " + mFlutterFragment);} }.start();

從 Android 中向 Flutter 傳遞消息成功 :

總結(jié)

以上是生活随笔為你收集整理的【错误记录】Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产日比视频 | 午夜8888| 秋霞亚洲| 天天爱天天干天天操 | 日本bbwbbw| 狂野少女电影在线观看国语版免费 | 91精品国产自产在线观看 | 日韩精品1 | 亚洲午夜免费视频 | 看毛片视频 | julia一区二区三区中文字幕 | 亚洲丝袜在线观看 | 成人三级做爰av | 欧美手机在线视频 | 亚洲精品美女视频 | 女人16一毛片 | 亚洲色图欧美激情 | 看片在线 | 日本黄色aaa | 久久久www成人免费精品 | 台湾av在线 | 91九色国产在线 | 日本变态折磨凌虐bdsm在线 | 激情深爱五月 | 人人看人人草 | 91超薄丝袜肉丝一区二区 | 成人免费看片39 | 日韩福利影院 | 亚洲精品一区在线 | 伊人影院在线观看视频 | 亚洲精品中文无码AV在线播放 | 日本老少交| 色姑娘综合网 | 成人久久毛片 | 国产毛片一区二区三区va在线 | 免费在线成人av | 欧美另类videosbestsex | 91免费短视频 | 136福利视频导航 | 成人夜晚看av | 成人在线观看av | 69国产在线 | www.色国产 | 日韩欧美高清在线观看 | 日韩欧美高清dvd碟片 | 极品三级 | 亚洲av无码一区二区三区人妖 | 亚洲自拍偷拍图 | 性感美女一区 | 无码人妻精品一区二区蜜桃色欲 | 男人插女人视频网站 | 99视频在线观看视频 | 嫩草影院永久入口 | 在线国产视频 | 婷婷人体 | 99草在线视频 | 三级中文字幕 | 国产免费无码一区二区视频 | 日韩欧美色| 老鸭窝av在线 | 日韩高清在线观看一区 | 国产福利片在线 | 国产99久久久国产精品 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 日韩精品2区 | 奇米久久 | 午夜视频在线免费观看 | 成人欧美一区二区三区黑人动态图 | www日本在线观看 | 超碰在线98 | 一级毛片基地 | av精选| 天堂av在线中文 | 日日夜夜免费精品 | 超碰98在线观看 | 91麻豆精品一区二区三区 | 亚洲一级在线观看 | 国产aⅴ激情无码久久久无码 | 亚洲欧美精品一区二区三区 | 天天操欧美 | 人妻熟人中文字幕一区二区 | 亚洲成年人在线 | 天天看片天天操 | 人妻熟女aⅴ一区二区三区汇编 | 免费黄色在线网址 | 欧美成人精品在线 | 亚洲在线免费视频 | 国产乱码av | 一二三区免费 | 欧美一区国产一区 | 男人天堂最新网址 | 99啪啪| 亚洲男女| 999精品一区 | 日本欧美在线 | 人妻无码久久一区二区三区免费 | 中国美女一级黄色片 | 久久精品www人人爽人人 | 日本不卡影院 |