1
AndroidのonClickイベントで呼び出されるansyncメソッドがあります。 このメソッドでは、いくつかのチェックが行われ、検索メソッドがawaitで呼び出され、検索クエリが送信され、応答が取得されます。メソッドで適切な値を返すことができません
検索メソッドが初めて呼び出されるときだけ、プログラムはメソッドから適切な戻り値を取得します。 2番目のif-blockでsearch-methodを使用しようとすると、search-methodはnullを返します。
正しいレスポンスを受信したかどうかを検索方法でチェックし、正しいレスポンが検索方法で受信されたため、問題が戻り部分にあるように見えます。むしろ1を共有するよりも "SEARCHQUERY" の
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);
私が知る限り、コードは大丈夫です。 'token'がまだ有効かどうかチェックしましたか? 'searchQuery'が実際に結果を返すことは確かですか? – Nitram
はい私はそれが何らかの結果をもたらし、 'token'がまだ有効であることを再度確認しました。私は100%デバッグモードで正しい結果が得られることを確認できます。 私は、最初の 'if'ブロックの内容をコメントするときに適切な結果が得られるので、私は2つの使用を待っていると思います。 – fbueckle
ちょうど推測ですが、 "searchQuery"のインスタンスを共有するのではなく、別のインスタンスを使用してみてください。 –