首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MessagingCenter正在开发WPF,但没有在Android上工作。

MessagingCenter正在开发WPF,但没有在Android上工作。
EN

Stack Overflow用户
提问于 2019-10-15 16:06:22
回答 2查看 531关注 0票数 1

我创建这个应用程序是为了回答一些关于MessagingCenter的问题,但是由于在Android平台上运行这个应用程序的问题,我无法继续运行这个应用程序,如果您知道可能出了什么问题,请帮助我。谢谢你的支持。

我试图在messagingcenter订阅中将结果页面更改为新的结果视图,但我不知道发生了什么,对我来说,就像在订阅中找不到消息一样。

App链接(GitHub)

在ResultView中:

代码语言:javascript
复制
public void Registro()
{
    MessagingCenter.Subscribe<ResultView>(this, "DisplayAlert", message =>
    {
        this.DisplayAlert("Alerta de Registro", "Mensagem DisplayAlert com registro Enviada", "Ok");
    });
}

在MainPage中:

代码语言:javascript
复制
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,但是应用程序简单地跳过了订阅内部的代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-15 16:31:27

尝尝这个

代码语言:javascript
复制
 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中

代码语言:javascript
复制
public MainPage()
        {   
            InitializeComponent();
            MessagingCenter.Send<string>("ok", "showBar");

        }

在我的原生安卓项目MainActivity.cs中

代码语言:javascript
复制
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());
        }

不需要创建页面的新实例就可以作为参数发送。

票数 0
EN

Stack Overflow用户

发布于 2019-10-16 02:58:54

First在您的GoPaginaResultComRegistro()方法中,您应该在PushAsync之后发送消息

代码语言:javascript
复制
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

代码语言:javascript
复制
 public void Registro()
    {
        MessagingCenter.Subscribe<ResultView>(this, "DisplayAlert", message =>
        {
            Device.BeginInvokeOnMainThread( async() =>
            {
                await DisplayAlert("Alerta de Registro", "Mensage DisplayAlert com registro Enviada", "Ok");
            });

        });
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58398725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档