前提・実現したいこと
環境:Xamarin.Android
ダイアログを表示して確認を行い、その後選択肢に応じた処理を行わせたい。
発生している問題・エラーメッセージ
dialog.Show()が実行されたタイミングでダイアログが生成されず、tryの中のif文が必ずfalseになり処理が進まない。
具体的にはelseのreturnが実行された後にダイアログが表示される。
該当のソースコード
C# MainActivity : AppCompatActivity , ITextWatcher { .... public AfterTextChanged (IEditable s) { ..... else if (etLoc_new.Length() == 12) { ConfirmDialog dialog = new ConfirmDialog(this, etLoc_new.Text); try { if (dialog.Choise()) //ダイアログでの選択によって戻り値が変化 { StockMovement movement = new StockMovement(etLoc_old.Text, etProCode.Text, Int32.Parse(etQuant.Text), etLoc_new.Text); if (movement.IsSuccess()) { dialog.Confirm(this); FormClear(); } else { this.Finish(); } } else { return; } } ....
ダイアログ表示用クラス public class ConfirmDialog : DialogFragment //,IDialogInterfaceOnClickListener { bool flg; public AlertDialog.Builder builder; public ConfirmDialog(Context context, string loc) { builder = new AlertDialog.Builder(context); var dialog = builder.Create(); builder.SetTitle("確認") .SetMessage("在庫移動を確定します。") .SetPositiveButton("はい", (s,e) =>{ flgChange(true); dialog.Dismiss(); }) .SetNegativeButton("いいえ", (s,e) => { flgChange(false); dialog.Dismiss(); }); dialog.Show(); void flgChange(bool f) { flg = f; } } public bool Choise() { return flg; }
ダイアログの選択肢によってflgの値が変動、その後Choise()の戻り値でtrueを得て
別の処理へ移行できると想定しておりました。
ダイアログの生成に関して何かルールがあり、そのせいでうまくいっていないのなら申し訳ありません。
海外の情報等も見てみましたが見つけられませんでした。
試したこと
別スレッドで処理をさせたり、呼び出し元からShow()を呼んでみたりしました。
Activityの問題なのかなとも思ってます。
補足情報(FW/ツールのバージョンなど)
初めての質問のため情報が足りない部分もあるかもしれないです。
何か必要なことがあればお申し付けください。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/11 09:17