C# MessagingCenter。未触发订阅
我正在尝试实现C# MessagingCenter。未触发订阅,c#,xamarin.forms,C#,Xamarin.forms,我正在尝试实现MessagingCenter将数据从本机发送到pcl。 在本机中,我设置了send方法: MessagingCenter.Send(App.Current,“Autorizzato”) 以下是主页上的代码: protected override void OnStart() { MessagingCenter.Subscribe<Application>(this, "Autorizzato", (sender) => {
MessagingCenter
将数据从本机发送到pcl。
在本机中,我设置了send方法:
MessagingCenter.Send(App.Current,“Autorizzato”)代码>
以下是主页上的代码:
protected override void OnStart()
{ MessagingCenter.Subscribe<Application>(this, "Autorizzato", (sender) => {
Debug.WriteLine("Ok!");
});
}
protectedoverride void OnStart()
{MessagingCenter.Subscribe(这个,“自动转载”,发送方)=>{
Debug.WriteLine(“Ok!”);
});
}
代码执行正确,但未触发MessagingCenter.Subscribe
。
实例的类型都是相同的
那么,如何解决这个问题呢?如果您查看我的博客:
它提供了有关如何使用XF消息中心的详细信息
如何订阅:
Subscribe<TSender> (object subscriber, string message, Action<TSender> callback, TSender source = null)
Subscribe(对象订户、字符串消息、操作回调、TSender source=null)
所以在应用程序中,它看起来像:
MessagingCenter.Subscribe<Sender> (this, "Hi", (sender) => {
// do something whenever the "Hi" message is sent
});
MessagingCenter.Subscribe(这个“嗨”,发送者)=>{
//无论何时发送“Hi”信息,都要采取措施
});
您的发件人可能是:
MessagingCenter.Send<MainPage> (this, "Hi");
MessagingCenter.Send(这个“Hi”);
这些变化应该有助于实现这一目标
如果有问题,请随时回复代码本身,但您需要确保在发送消息时,TSender
已实例化,而不是空
您在哪里调用了MessagingCenter.Send
?如果您在OnCreate
方法中调用了MainActivity
,请尝试将其移动到OnStart
方法
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnStart()
{
base.OnStart();
MessagingCenter.Send<Xamarin.Forms.Application>(App.Current, "Autorizzato");
}
{
我已经读过你的博客了,我遵循了这些技巧。尽管如此,我相信问题在于发送者的类型,即本机项目中的AndroidX.Fragment.App.FragmentActivity。即使在PCL项目中的Subscribe中,如何指定相同的类型?您可以使用对象
作为
参数以避免that@jason:不幸的是,它仍然没有被触发:(您是否同时使用
发送和订阅?参数
非常匹配是的,我做了,但什么都没有
public partial class App : Application
{
public App()
{
InitializeComponent();
...
}
protected override void OnStart()
{
MessagingCenter.Subscribe<Application>(this, "Autorizzato", (sender) => {
Debug.WriteLine("Ok!");
});
}
}