【问题标题】:How to send a display alert in the opening activity of a xamarin forms project如何在 xamarin 表单项目的打开活动中发送显示警报
【发布时间】:2021-07-07 15:15:33
【问题描述】:

我已经为我的工作在 Xamarin.forms 应用程序上工作了大约一年。我从对 xamarin.forms 框架几乎一无所知的前任手中接手。

我有过一些小问题,但我一般都能过得去。

但是在这里我卡在了一些应该是基本的东西上。 该应用程序分为两部分,一个主要用于启动事物(从未接触过它,因为它并没有真正改变应用程序的功能),而另一个是 if 的本质。

现在我正在尝试从应用中心获取应用更新。为了能够让用户在应用程序中下载,我需要制作一条自定义更新消息。好吧,我想,但问题是:我无法让它使用 displayalert 功能。

这是我正在处理的部分:

using System;

using Android.Support.V4.App;
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using System.Timers;
using Picking.Droid;
using Picking.Droid.Helpers;
using Xamarin.Essentials;
using Plugin.CurrentActivity;
using Android.Support.V4.Content;
using Android;
using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;
using Microsoft.AppCenter.Distribute;
using Android.Content;
using SharpCifs.Smb;
using System.Threading.Tasks;

protected override void OnCreate(Bundle savedInstanceState)
        {
            Distribute.SetEnabledForDebuggableBuild(true);
            Distribute.ReleaseAvailable = OnReleaseAvailable;
            AppCenter.Start("android=[top Secret Code]",
                   typeof(Analytics), typeof(Crashes), typeof(Distribute));
            Distribute.CheckForUpdate();
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;
            CrossCurrentActivity.Current.Init(this, savedInstanceState);
            base.OnCreate(savedInstanceState);

            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());
        }

bool OnReleaseAvailable(ReleaseDetails releaseDetails)
        {
            // Look at releaseDetails public properties to get version information, release notes text or release notes URL
            string versionName = releaseDetails.ShortVersion;
            string versionCodeOrBuildNumber = releaseDetails.Version;
            string releaseNotes = releaseDetails.ReleaseNotes;
            Uri releaseNotesUrl = releaseDetails.ReleaseNotesUrl;

            // custom dialog
            var title = "Version " + versionName + " available!";
            Task answer;

            // On mandatory update, user can't postpone
            if (releaseDetails.MandatoryUpdate)
            {
                answer = DisplayAlert(title, releaseNotes, "Download and Install");
            }
            else
            {
                answer = Current.MainPage.DisplayAlert(title, releaseNotes, "Download and Install", "Maybe tomorrow...");
            }
            answer.ContinueWith((task) =>
            {
                // If mandatory or if answer was positive
                if (releaseDetails.MandatoryUpdate || (task as Task<bool>).Result)
                {
                    // Notify SDK that user selected update
                    Distribute.NotifyUpdateAction(UpdateAction.Update);
                }
                else
                {
                    // Notify SDK that user selected postpone (for 1 day)
                    // This method call is ignored by the SDK if the update is mandatory
                    Distribute.NotifyUpdateAction(UpdateAction.Postpone);
                }
            });

            // Return true if you're using your own dialog, false otherwise
            return true;
        }

我唯一的问题是应用程序的最后一部分,在“OnReleaseAvailable”中,我找不到该部分的 displayAlert。我尝试引用当前、主页、活动,但没有。

感谢您的帮助。

为了清楚起见:红色是我通常使用的 xamarinforms,蓝色是我现在工作的地方,它基本上只是进行基本启动,然后让 xamarin 表单处理其余部分。我在 MainActivity.cs 中

【问题讨论】:

  • DisplayAlert 是 Page 方法,因此它仅适用于 XF 页面的上下文。您正在尝试从 Android MainActivity 执行它。您可以尝试绑定到 App.Current.MainPage 以获取正确的上下文
  • @Jason 就是这样。您能否将其发布为答案,以便我将其标记为答案?非常感谢;-)

标签: c# android xamarin.forms


【解决方案1】:

DisplayAlertPage 方法,因此它仅适用于 XF Page 的上下文。您正在尝试从 Android MainActivity 执行它。您可以尝试绑定到App.Current.MainPage 以获取正确的上下文

【讨论】:

    猜你喜欢
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多