我有一个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下的任何设备上均未显示。这是什么原因?
答案 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(“正在提交数据...”);