Xamarin.forms Acr用户对话框加载指示器未显示

时间:2019-04-08 17:39:53

标签: c# xamarin xamarin.forms

我有一个xamarin表单应用程序。在我的应用程序中,我有一个按钮单击,它将根据我的逻辑调用某些Web api并显示弹出窗口(Rg.popUp插件)。 Iam面临的问题是,当用户单击按钮时,我正在尝试实现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下的任何设备上均未显示。这是什么原因?

2 个答案:

答案 0 :(得分:1)

 Device.BeginInvokeOnMainThread(async () => {

                try
                {
                using (this.Dialogs.Loading("Loading..."))
                {
                        await Task.Delay(300);
                        //Your Service code
                }
              }
  catch (Exception ex)
        {
                var val=ex.Message;
            UserDialogs.Instance.Alert("Test", val.ToString(), "Ok");
        }
    });

答案 1 :(得分:1)

你可以试试这个吗 等待Task.Delay(200); UserDialogs.Instance.ShowLoading(“正在提交数据...”);