簡體   English   中英

Flutter Plugin 使用 Kotlin,Activity 總是返回 null

[英]Flutter Plugin With Kotlin, Activity always returns null

當我在 Flutter 中按下 FAB 時,我試圖訪問用 Kotlin 編寫的 Flutter 插件中的活動引用。

我的課程是ActivityAware

這是代碼:Kotlin:

  lateinit var myActivity: Activity

    //Method called by ActivityAware plugins to fetch the activity on re-initialization
  override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {

  this.myActivity = binding.activity 
}


      //Method called by ActivityAware plugins to fetch the activity on initialization
    override fun onAttachedToActivity(binding: ActivityPluginBinding) {

      this.myActivity = binding.activity
  }


  //With this method is called from Flutter to check if the Activity is accessible.
  //In this case it is always returning null/ not initialized
  //It prints "FAILED AGAIN!!"
  override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
    if (call.method == "checkForActivity") {

      if(::myActivity.isInitialized){

        System.out.println("I FOUND IT!!")
      }else{
        System.out.println("FAILED AGAIN!!")
      }
          return
    } else {
      result.notImplemented()
    }
  }

飛鏢代碼(Flutter):

//This Flutter class is run whenever you press a button to check for the Activity in Native Kotlin.
    static const MethodChannel _channel =
          const MethodChannel('sphinx_plugin');
      static Future<bool> get checkForActivity async {
        final bool isready = await _channel.invokeMethod('checkForActivity');
        return isready;
      }

我找到了解決方案。

 lateinit var myplugin: MyPlugin()

  override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
      myplugin = MyPlugin()
    val channel = MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "my_plugin")
    channel.setMethodCallHandler(myplugin)



  }



 //This is where I was going wrong..The reference was being lost somewhere
    override fun onAttachedToActivity(binding: ActivityPluginBinding) {

      myplugin.myActivity = binding.activity
  }

通過設置:

myplugin.myActivity

后來我找到了活動參考。 無論如何謝謝:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM