我创建这个应用程序是为了回答一些关于MessagingCenter的问题,但是由于在Android平台上运行这个应用程序的问题,我无法继续运行这个应用程序,如果您知道可能出了什么问题,请帮助我。谢谢你的支持。
我试图在messagingcenter订阅中将结果页面更改为新的结果视图,但我不知道发生了什么,对我来说,就像在订阅中找不到消息一样。
App链接(GitHub)
在ResultView中:
public void Registro()
{
MessagingCenter.Subscribe<ResultView>(this, "DisplayAlert", message =>
{
this.DisplayAlert("Alerta de Registro", "Mensagem DisplayAlert com registro Enviada", "Ok");
});
}在MainPage中:
ResultView ResultPage = new ResultView();
private void GoPaginaResultComRegistro(object sender, EventArgs e)
{
ResultPage.Registro();
MessagingCenter.Send<ResultView>(ResultPage, "DisplayAlert");
MessagingCenter.Unsubscribe<ResultView>(ResultPage, "DisplayAlert");
this.Navigation.PushAsync(ResultPage);
}在发送消息时,我在另一个屏幕上等待DisplayAlert,但是应用程序简单地跳过了订阅内部的代码。
发布于 2019-10-15 16:31:27
尝尝这个
public void Registro()
{
MessagingCenter.Subscribe<ResultView,string>(this, "DisplayAlert", async (sender,message) =>
{
await DisplayAlert("Alerta de Registro", message, "Ok");
});
}
var mensagem = "teste";
MessagingCenter.Send<ResultView,string>(ResultPage, "DisplayAlert",mensagem);下面是我在我的项目中使用的一些例子
在我的PCL MainPage.cs中
public MainPage()
{
InitializeComponent();
MessagingCenter.Send<string>("ok", "showBar");
}在我的原生安卓项目MainActivity.cs中
protected override void OnCreate(Bundle savedInstanceState)
{
MessagingCenter.Subscribe<string>(this, "showBar", (sender) =>
{
this.Window.ClearFlags(WindowManagerFlags.Fullscreen);
});
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
this.Window.AddFlags(WindowManagerFlags.Fullscreen);
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}不需要创建页面的新实例就可以作为参数发送。
发布于 2019-10-16 02:58:54
First在您的GoPaginaResultComRegistro()方法中,您应该在PushAsync之后发送消息
private void GoPaginaResultComRegistro(object sender, EventArgs e)
{
ResultPage.Registro();
this.Navigation.PushAsync(ResultPage);
MessagingCenter.Send<ResultView>(ResultPage, "DisplayAlert");
MessagingCenter.Unsubscribe<ResultView>(ResultPage, "DisplayAlert");
}第二个在您的ResultView页面中,调用MainThread中的DisplayAlert:
public void Registro()
{
MessagingCenter.Subscribe<ResultView>(this, "DisplayAlert", message =>
{
Device.BeginInvokeOnMainThread( async() =>
{
await DisplayAlert("Alerta de Registro", "Mensage DisplayAlert com registro Enviada", "Ok");
});
});
}https://stackoverflow.com/questions/58398725
复制相似问题