首页 > 解决方案 > Flutter Android 现有宿主应用扩展了 Fragment/AppCompatActivity , onClick 按钮需要向 Flutter Dart 发送消息

问题描述

我有一个现有的 Android 应用程序,并通过点击此链接将颤振模块作为库添加到其中。

我有一个现有的片段,它扩展了片段,并希望使用通道从这个片段向 Dart 发送消息。按照这个链接

单击按钮时将此代码添加到我现有的 Fragment 中,我得到的错误是“无法解析方法 getFlutterView()

 public class MainActivity extends AppCompatActivity {
private static final String CHANNEL = "flutter.native/helper";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
            new MethodChannel.MethodCallHandler() {
                @Override
                public void onMethodCall(MethodCall call, MethodChannel.Result result) {
                    if (call.method.equals("helloFromNativeCode")) {
                        String greetings = helloFromNativeCode();
                        result.success(greetings);
                    }
                }
            });

}
}

在此处输入图像描述

标签: androidflutterflutter-dependencies

解决方案


终于可以通过添加虚拟 FlutterView 来修复它,

View flutterView = Flutter.createView(
            MainActivity.this,
            getLifecycle(),
            "anyText"
    );

    new MethodChannel((BinaryMessenger) flutterView, CHANNEL).setMethodCallHandler(
            new MethodChannel.MethodCallHandler() {
                @Override
                public void onMethodCall(MethodCall call, MethodChannel.Result result) {
                    if (call.method.equals("helloFromNativeCode")) {
                        String greetings = helloFromNativeCode();
                        result.success(greetings);
                    }
                }
            });

推荐阅读