亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在應用程序啟動時顯示警報 Xamarin Forms

無法在應用程序啟動時顯示警報 Xamarin Forms

C#
慕妹3242003 2023-09-16 17:16:51
我正在開發一個 Xamarin Forms 應用程序,我想在其中啟動時執行一些操作。我想調用的方法的一部分負責檢查是否滿足某些條件,如果沒有,我想顯示一個警報(使用 DisplayAlert 方法)來通知用戶他/她應該采取的操作,以便正確執行執行應用程序功能。不幸的是,在 Android 上,警報不會顯示,它并不總是發生,有時會顯示,但在大多數情況下不會顯示。經過一些研究后,我認為該問題可能與線程有關。我添加了一些斷點,我注意到在 Android 上,負責顯示警報的代碼行在頁面變得可見之前被執行。在 iOS 上,一切正常(當顯示大約一半的 UI 時,就會顯示警報)。我嘗試從主線程執行所有內容。在 Android 上它有部分幫助,警報在更多情況下正確顯示,盡管我仍然沒有達到 100% 的準確性。此外,在 iOS 上,提到的更改導致應用程序卡在啟動屏幕上。下面是我嘗試使用的代碼的兩個版本。首先是我開始的基本代碼:    public partial class App : Application    {        MainPage mainPage;        public static string DatabaseLocation = string.Empty;        public App(string databaseLocation)        {            //All of the UI code is written in C# in MainPage initializer            mainPage = new MainPage();            MainPage = new NavigationPage(mainPage);            DatabaseLocation = databaseLocation;        }        protected override async void OnStart()        {            base.OnStart();            //in DoThings there is a code containing DisplayAlert            await mainPage.DoThings();        }    }下面是我嘗試將所有內容都放在主線程上的代碼版本:public partial class App : Application    {        MainPage mainPage;        public static string DatabaseLocation = string.Empty;        public App(string databaseLocation)        {            Device.BeginInvokeOnMainThread(() =>            {                mainPage = new MainPage();                MainPage = new NavigationPage(mainPage);            });            DatabaseLocation = databaseLocation;        }        protected override async void OnStart()        {            base.OnStart();            Device.BeginInvokeOnMainThread(async () =>            await mainPage.DoThings());        }    }我還嘗試從主線程運行專門負責顯示警報的代碼行,但它也沒有幫助。DoThings 是 MainPage 中的一個方法。public async Task DoThings() {  if (somethingMissing()){    Device.BeginInvokeOnMainThread(async () =>      await DisplayAlert("Error", "Fix errors", "Ok"));  }  else  {    DoStuff();  }}
查看完整描述

1 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

在主頁中你可以嘗試這個代碼


public async Task DoThings() {


  if (somethingMissing()){

    Device.BeginInvokeOnMainThread(async () =>

      await App.Current.MainPage.DisplayAlert("Error", "Fix errors", "Ok"));

  }

  else

  {

    DoStuff();

  }

}


查看完整回答
反對 回復 2023-09-16
  • 1 回答
  • 0 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號