Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

Xamarin.AndroidでDialogFragmentを使う

$
0
0

時代はダイアログもフラグメント…ということでやってみました。簡単なアラートダイアログを出して、押したボタンに応じてトーストを表示してます。

using Android.App;
using Android.Content;
using Android.OS;
using Android.Widget;

namespace DialogFragmentApp
{
    [Activity(Label = "DialogFragmentApp", MainLauncher = true, Icon = "@drawable/icon")]
    publicclass MainActivity : Activity
    {

        protectedoverridevoid 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
    {
        publicoverride 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;
        }

        publicvoid OnClick(IDialogInterface dialog, int which)
        {
            // トーストを作って表示
            Toast.MakeText(
                this.Activity,
                // whichがPositiveなときとそうじゃないときで表示テキストを切り替える
                which == (int)DialogButtonType.Positive ? "Positive" : "Negative",
                ToastLength.Long)
                .Show();
        }
    }

}

まぁコメント通りです。OnClick内でActivityに結果返すのどうするんだろう????


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>