首页 > 解决方案 > 事件总线 Xamaring。使用反射未找到自定义活动方法

问题描述

我在我的 Xamarin Android 项目中添加了 EventBus 作为绑定库。我可以编译没有错误,但是当我尝试注册时,我收到以下错误:

在此处输入图像描述

这是活动的代码

[Activity(Icon = "@mipmap/ic_launcher"]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Forms.Init(this, savedInstanceState);
        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        CrossCurrentActivity.Current.Init(this, savedInstanceState);
        LoadApplication(new App());
        

        EventBus.Default.Register(this);
    }

    protected override void OnDestroy()
    {
        base.OnDestroy();
        EventBus.Default.Unregister(this);
    }

    [Subscribe]
    public void onEvent(DeviceConnectionEvent my_event)
    {
        throw new NotImplementedException();
    }

    protected override void OnActivityResult(int requestCode, Result resultVal, Intent data)
    {

        if (requestCode == 1)
        {
            wifiManagerInstance.onNetworkDataReceived();
        }

        base.OnActivityResult(requestCode, resultVal, data);

    }
}

当 eventbus 使用反射时,似乎没有检测到我的方法

methods = findState.clazz.getDeclaredMethods();

检测活动的其他方法如下图所示。

在此处输入图像描述

有什么我可以做的吗?

提前致谢。

标签: xamarinreflectionbindingevent-bus

解决方案


由于我没有 的绑定库,因此无法对其进行测试,但是您可以在使用属性EventBus时检查您的包是否正确导入。[Subscribe]

在这里你应该使用org.greenrobot.eventbus.Subscribe;而不是com.google.common.eventbus.Subscribe;

我想你也可以使用MessagingCenter来做你想做的事。


推荐阅读