我在android的xamarin应用程序中遇到了问题。 从我的主要活动我调用登录活动来检查用户和passwordentered是否正确,它是通过Microsoft.WindowsAzure.MobileServices插件完成的。 我得到了答案,但是当我尝试在异步函数中打开一个新活动时,得到结果,应用程序挂起。 我尝试从异步方法外部访问该目标活动,它的工作原理。我的代码:
private async Task<int> GetAdminUser(string userName,string password)
{
int userId = -1;
try
{
users = await usersTable.Where (item => item.UserLoginName == userName && item.UserPassword == password).ToListAsync ();
if(users != null)
{
userId = users[0].UserId;
}
else{
userId = -1;
}
}
catch(Exception ex) {
userId = -1;
}
return userId;
}
private async Task GetAdminUserWrapper(string userName,string password)
{
int userId = await GetAdminUser (userName, password);
if (userId != -1)
{
//new AlertDialog.Builder (this).SetMessage ("User id : " + userId.ToString ()).Create().Show();
await OpenUserBusinessSalesIntent (userId);
}
}
async Task OpenUserBusinessSalesIntent (int userId)
{
try {
Intent testActivity = new Intent (this, typeof(TestActivity));
//userSalesActivity.AddFlags (ActivityFlags.NewTask);
//userSalesActivity.PutExtra ("UserIdBusiness",userId.ToString ());
//SetResult (Result.Ok,testActivity);
StartActivity (testActivity);
}
catch (Exception ex)
{
}
}
任何帮助都会得到满足 Shlomy
答案 0 :(得分:1)
在UI线程上启动活动:
runOnUiThread(() => {
Intent testActivity = new Intent (this, typeof(TestActivity));
StartActivity (testActivity);
});
答案 1 :(得分:0)
感谢您的想法,崩溃是在我尝试在异步功能中启动新意图时 在我收到userId之后。 解决方案是使用RunOnUiThread并使用try catch和runOnUiThread包装它 开始意图。 10倍 Shlomy