時代はダイアログもフラグメント…ということでやってみました。簡単なアラートダイアログを出して、押したボタンに応じてトーストを表示してます。
using Android.App; using Android.Content; using Android.OS; using Android.Widget; namespace DialogFragmentApp { [Activity(Label = "DialogFragmentApp", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); this.SetContentView(Resource.Layout.Main); var button = this.FindViewById<Button>(Resource.Id.MyButton); button.Click += (s, e) => { // タグ名でフラグメントを取得してみる var dlg = this.FragmentManager .FindFragmentByTag<MyDialogFragment>(typeof(MyDialogFragment).Name); if (dlg == null) { // 取得できなかったらBundle軽油でメッセージを渡してダイアログを表示 Bundle b = new Bundle(); b.PutString("alertMessage", "Hello world"); dlg = new MyDialogFragment(); dlg.Arguments = b; dlg.Show(this.FragmentManager, typeof(MyDialogFragment).Name); } }; } } // ダイアログのフラグメント。 // ボタンを押したときの処理に応答するためIDialogInterfaceOnClickListenerを実装 class MyDialogFragment : DialogFragment, IDialogInterfaceOnClickListener { public override Dialog OnCreateDialog(Bundle savedInstanceState) { // ダイアログを作って返す var d = new AlertDialog.Builder(this.Activity) .SetTitle("title") .SetMessage(this.Arguments.GetString("alertMessage")) // OKボタンを押したときのコールバックの設定 .SetPositiveButton("OK", this) // Cancelボタンを押したときのコールバックの設定 .SetNegativeButton("Cancel", this) .Create(); return d; } public void OnClick(IDialogInterface dialog, int which) { // トーストを作って表示 Toast.MakeText( this.Activity, // whichがPositiveなときとそうじゃないときで表示テキストを切り替える which == (int)DialogButtonType.Positive ? "Positive" : "Negative", ToastLength.Long) .Show(); } } }
まぁコメント通りです。OnClick内でActivityに結果返すのどうするんだろう????