我有一个在Android中的onClick-Event上调用的ansync方法。 在该方法中,进行一些检查,然后使用await调用search-method,该方法发送searchquery并获得响应。
Unfortunatley只在第一次调用search-method时程序从方法中获得正确的返回。如果我尝试在第二个if块中使用search-method,则search-method返回null。
我在搜索方法中检查了它是否收到了正确的响应,问题似乎出现在返回部分,因为在搜索方法中收到了正确的响应。
我的代码如下所示:
private async void CreateSearchQuery(object sender, EventArgs e)
{
SearchQuery searchQuery = new SearchQuery();
if (spinnerPosition == FIBU)
{
searchQuery.doctype = "Fibu Rechnungen";
searchQuery.query = new Dictionary<string, string>();
searchQuery.query.Add("belegnr", belegnummer.Text);
prefs = PreferenceManager.GetDefaultSharedPreferences(this);
var token = prefs.GetString("token", "");
ProgressDialog progress = new ProgressDialog(this);
progress.Indeterminate = true;
progress.SetProgressStyle(ProgressDialogStyle.Spinner);
progress.SetMessage("Suche nach Daten....");
progress.SetCancelable(false);
progress.Show();
JArray searchresult = await SearchQuery.SendSearchQuery(searchQuery, token);
progress.Cancel();
FibuDocument[] documents = searchresult.ToObject<FibuDocument[]>();
var intent = new Intent(this, typeof(SearchFibuDetailsActivity));
var json = JsonConvert.SerializeObject(documents);
ISharedPreferencesEditor editor = prefs.Edit();
editor.PutString("searchQuery", json);
editor.Apply();
StartActivity(intent);
}
if (spinnerPosition == AUFTRAGSBELEGE)
{
searchQuery.doctype = "Auftragsbelege";
searchQuery.query = new Dictionary<string, string>();
if(auftragsnummer.Text != "")
{
searchQuery.query.Add("auftragsnr", auftragsnummer.Text);
}
if(gstKode.Text != "")
{
searchQuery.query.Add("gst", gstKode.Text);
}
if(trackTrace.Text != "")
{
searchQuery.query.Add("sttnr", trackTrace.Text);
}
prefs = PreferenceManager.GetDefaultSharedPreferences(this);
var token = prefs.GetString("token", "");
ProgressDialog progress = new ProgressDialog(this);
progress.Indeterminate = true;
progress.SetProgressStyle(ProgressDialogStyle.Spinner);
progress.SetMessage("Suche nach Daten....");
progress.SetCancelable(false);
progress.Show();
JArray searchresult = await SearchQuery.SendSearchQuery(searchQuery, token);
progress.Cancel();
Document[] documents = searchresult.ToObject<Document[]>();
var json = JsonConvert.SerializeObject(documents);
答案 0 :(得分:1)
使用&#34; searchQuery&#34;的不同实例而不是分享一个。