【问题标题】:Xamarin.Forms MvvM Prism Software and Hardware Back ButtonXamarin.Forms MvvM Prism 软件和硬件后退按钮
【发布时间】:2021-04-13 13:53:27
【问题描述】:

我的实现代码有问题,该代码解决了确认软件和硬件按钮返回的问题。我需要确认并保存状态页面字段。当确认为真且保存状态没有错误时,我想关闭页面,当确认为假或保存状态有错误时,我想停止关闭页面。我将 xamarin.forms 与 mvvm prism 一起使用。

【问题讨论】:

    标签: xamarin.forms mvvm prism


    【解决方案1】:

    如果你想自定义Android设备的软件硬件返回按钮的方法,你可以覆盖OnOptionsItemSelected和@ MainActivity.cs 中的 987654323@ 方法来实现。

    软件返回MainActivity.cs中的按钮代码:

    protected override void OnCreate(Bundle savedInstanceState)
    {
       ...
       Android.Support.V7.Widget.Toolbar toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
       SetSupportActionBar(toolbar);
       SupportActionBar.SetHomeButtonEnabled(true);
    }
    
    public override bool OnOptionsItemSelected(IMenuItem item)
    {
        if(item.ItemId == Android.Resource.Id.Home)
        {
            Console.WriteLine("software back button press");
            return false;
        }
        else
        {
            return base.OnOptionsItemSelected(item);
        }
    }
    

    硬件返回MainActivity.cs中的按钮代码:

    public override bool OnKeyDown([GeneratedEnum] Keycode keyCode, KeyEvent e)
    {
        if(e.Action == KeyEventActions.Down && keyCode == Keycode.Back)
        {
            Console.WriteLine("hardware back button press");
        }
        return false;
    }
    

    【讨论】:

    • 感谢您的回答。问题是我使用棱镜,当用户确认关闭页面时,我需要从页面字段保存数据做数据库。当我必须发送数据时,使用 MainActivity.cs 很不方便。
    • @PiotrMysłek Okey,没问题。您可以使用MessagingCenter 向 Prism 发送带有数据的消息。
    • 你能给我发MessagingCenter的例子并使用MainActivity.cs作为确认返回按钮吗?
    • @PiotrMysłek 抱歉,这取决于您的逻辑。但是使用 MessageCenter 很容易。您可以解释更多有问题的逻辑信息。并将我的代码添加到您的项目中尝试一下。
    • 好的。没问题。我在哪里找到 IMenuItem。
    猜你喜欢
    • 2019-02-03
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2017-01-26
    • 2019-05-01
    相关资源
    最近更新 更多