首页 > 解决方案 > Xamarin.forms Acr 用户对话框加载指示器未显示

问题描述

我有一个 xamarin 表单应用程序。在我的应用程序中,我有按钮单击,它将根据我的逻辑调用某些 Web api 并显示弹出窗口(Rg.popUp 插件)。我面临的问题是我试图在用户单击按钮时实现 Acr.Userdialog 活动指示器。我的意图是当用户单击按钮时,应显示指示器并在后台完成 API 调用,直到弹出窗口显示。

我做了什么

namespace sampleapp
{
    public partial class MainPage : ContentPage
    {
        string truequescount;
        MobileListData mobileListData = new MobileListData();
        StateListData stateListData = new StateListData();
        UserMappedStateListData userMappedStateListData = new UserMappedStateListData();
        public MainPage()
        {
            InitializeComponent();               
            LoadScreenItems();          
        }

        private async void submit_clicked(object sender, EventArgs args)
        {                 
            if (StateListData.Entry[0].State.Contains(State_picker.Text))
            {
                UserDialogs.Instance.ShowLoading("submitting data...");               
                try
                {                      
                    //My API Calls                         
                    if (transactions[0].Questions.Count < 5)
                    {   
                        // navigation 1 according to condition  
                        UserDialogs.Instance.HideLoading();                    
                        await PopupNavigation.PushAsync(new NoDataPopUp());
                    }
                    else
                    {
                        //some logic                        
                        if (ObjQuestionData.Count < 1)
                        {    
                            //navigation 2 according to condition
                            UserDialogs.Instance.HideLoading();                      
                            await PopupNavigation.PushAsync(new InsuffQdata());
                        }
                        else
                        {
                            //some logic
                        }                      
                    }
                    // Orginal navigation if all conditions surpassed
                    UserDialogs.Instance.HideLoading();
                    await Navigation.PushAsync(new SecurityQuestionScreen(tranzaction, formdata));                        
                } 
                catch (Exception) 
                {                   
                }        
            }
            else
            {
                // another navigation according to condition
                UserDialogs.Instance.HideLoading();
                await PopupNavigation.PushAsync(new FormVerificationPopup(formdata));
            }
        }
    }
}

根据我的代码加载指示器仅在弹出窗口出现后显示。任何帮助表示赞赏。

编辑

我试图在主线程中加载它,它工作正常。但现在它只适用于 android 9.0。在android 9下的任何设备上都没有显示。这是什么原因?

标签: c#xamarinxamarin.forms

解决方案


你可以试试这个 await Task.Delay(200); UserDialogs.Instance.ShowLoading("正在提交数据...");


推荐阅读