【发布时间】:2018-07-22 13:53:57
【问题描述】:
我使用 xamarin android 创建了需要显示和警告框的应用程序,并根据选择的值进行一些计算。所以在菜单项点击我已经添加了下面的代码。
public override async Task<bool> OnOptionsItemSelected(IMenuItem item)
{
bool bTotalResult = false;
switch (item.ItemId)
{
case Resource.Id.action_next:
bTotalResult = await ShowPayMentTypeDialog();
return await Task.Run(() => true).ConfigureAwait(true); ;
default:
return await Task.Run(() => base.OnOptionsItemSelected(item)).ConfigureAwait(true);;
}
//return await Task.Run(() => false ).ConfigureAwait(true);
}
private async Task<bool> ShowPayMentTypeDialog()
{
bool bResult = false;
try
{
LayoutInflater layoutInflater = LayoutInflater.From(this);
View view = layoutInflater.Inflate(Resource.Layout.lyt_cash_credit_popup, null);
Android.Support.V7.App.AlertDialog.Builder alertbuilder = new Android.Support.V7.App.AlertDialog.Builder(this);
alertbuilder.SetView(view);
var userdata = view.FindViewById<Spinner>(Resource.Id.spnrPaymentTerms);
List<cls_spinner_adapter> resultsWayNo = new List<cls_spinner_adapter> {
new cls_spinner_adapter {SZ_SPINNER_TEXT ="CASH"},
new cls_spinner_adapter {SZ_SPINNER_TEXT ="CREDIT" } };
CommonSpinnerAdapter paymentAdapter = new CommonSpinnerAdapter(this, resultsWayNo);
userdata.Adapter = paymentAdapter;
alertbuilder.SetCancelable(false)
.SetPositiveButton("OK", delegate
{
if (resultsWayNo[userdata.SelectedItemPosition].SZ_SPINNER_TEXT == "CASH")
{
cls_statics.B_IS_PROMOMAYMANET_CASH = true;
}
else
{
cls_statics.B_IS_PROMOMAYMANET_CASH = false;
}
bResult = true;
})
.SetNegativeButton("Cancel", delegate
{
cls_statics.B_IS_PROMOMAYMANET_CASH = false;
bResult = true;
alertbuilder.Dispose();
});
Android.Support.V7.App.AlertDialog dialog = alertbuilder.Create();
dialog.Show();
}
catch
{
}
return await Task.Run(() => bResult).ConfigureAwait(true);
}
但是在编译时我遇到了错误。
返回类型必须为 'bool' 以匹配被覆盖的成员
Activity.OnOptionsItemSelected(IMenuItem)
【问题讨论】:
-
那么我怎样才能做到这一点我只想将对话结果显示为等待任务。
-
await 仅适用于异步任务
下面的错误“等待”运算符只能在异步方法中使用。
标签: c# xamarin async-await