´ëÈ­ »óÀÚ Ç¥½Ã

 ½º¸¶Æ®Æù¿¡¼­ ´ëÈ­ »óÀÚ ÇüŸ¦ Ç¥ÇöÇÏ´Â ¹æ¹ýÀº 3°¡Áö°¡ ÀÖ´Ù. ¿©±â¼­´Â ÀÌ 3°¡Áö ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇϰíÀÚ ÇÑ´Ù.

ù ¹øÂ°´Â °£´ÜÈ÷ ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÏ´Â °ÍÀ¸·Î ½º¸¶Æ®Æù¿¡¼­´Â ´ëÈ­ »óÀÚÀÇ ÇüŰ¡ ¾Æ´Ñ Toast¸¦ ¸¹ÀÌ »ç¿ëÇÑ´Ù. Toast¿¡ ´ëÇØ¼­´Â ±âº»ÇÁ·Î±×·¥ Á¦ÀÛ¿¡¼­ Çѹø ¼³¸íÇßÀ¸¸ç ¾Æ·¡ÀÇ ÇüÅ·Π¸Þ½ÃÁö¸¦ Ç¥½ÃÇÑ´Ù.

            Toast.MakeText(this, "Ç¥½ÃÇϰíÀÚ ÇÏ´Â ¹®ÀÚ¿­", ToastLength.Short).Show();

 

µÎ ¹øÂ°´Â Áú¹®À» ÇÏ¿© ´äÀ» ¾ò´Â ´ëÈ­ »óÀÚÀÌ´Ù.

DialogSampleÀ̶ó´Â À̸§À¸·Î Blank App(Android) ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í, Back ۸¦ ´­·¶À» ¶§ Á¾·áÇÒ °ÍÀÎÁö¸¦ ¹¯´Â ´ëÈ­ »óÀÚ¸¦ ±¸¼ºÇØ º¼ °ÍÀÌ´Ù.

Áú¹®ÇÏ´Â ´ëÈ­ »óÀÚ¿¡ ´ëÇØ¼­´Â Ŭ·¡½º ÇüÅ·ΠÁ¦ÀÛÇÏ¿© Á¦°øÇϰí, ±× Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â ¹ýÀ» ¼³¸íÇÏ´Â ÇüŸ¦ ÃëÇÒ °ÍÀÌ´Ù.

¸ÕÀú MessageBox¶ó´Â Ŭ·¡½º¸¦ ¿©±â¸¦ ´­·¯ ´Ù¿î¹Þ¾Æ ÇÁ·ÎÁ§Æ® Æú´õ¿¡ ³Ö°í ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇÑ´Ù.

MainActivity.csÆÄÀÏÀ» ¿­¾î MessageBox¸¦ »ç¿ëÇϱâ À§ÇØ CommonLibÀ» usingÇÏ°í ¾Æ·¡¿Í °°ÀÌ ¼Ò½º¸¦ Ãß°¡ÇÑ´Ù.

        public override void OnBackPressed()

        {

            MessageBox messageBox = MessageBox.Execute(this, "µµÂø¾Ë¸²ÀÌ", "¾ÛÀ» Á¾·áÇÒ±î¿ä?");

            messageBox.okEvent += MessageBoxOK;

        }

 

        void MessageBoxOK()

        {

            Finish();

            Android.OS.Process.KillProcess(Android.OS.Process.MyPid());

        }

OnBackPressed ÇÔ¼ö´Â ½º¸¶Æ®ÆùÀÇ Back ¹öưÀ» ´­·¶À» ¶§ È£ÃâµÇ´Â ÇÔ¼öÀ̸ç ÇÔ¼ö³»¿¡¼­ ¿¹ ¹öưÀ» ´­·¶À» ¶§ È£ÃâµÇ´Â MessageBoxOK¸¦ Á¤ÀÇÇÏ¿© ±¸ÇöÇÑ´Ù..

MessageBoxOK ÇÔ¼ö³»¿¡¼­ AppÀ» ¿ÏÀüÈ÷ Á¾·áÇϵµ·Ï ±¸ÇöÇß´Ù. Android.OS.Process.KillProcess(Android.OS.Process.MyPid());¸¦ È£ÃâÇØÁÖÁö ¾ÊÀ¸¸é È­¸é¿¡¼­´Â »ç¶óÁö³ª ¿ÏÀüÈ÷ Á¾·áµÇÁö´Â ¾Ê´Â´Ù.

´ÙÀ½Àº AppÀ» ½ÇÇàÇÏ¿© Back ¹öưÀ» ´©¸¥ È­¸éÀÌ´Ù.

¼¼¹øÂ°·Î ´ëÈ­ »óÀÚ¸¦ ¿øÇϴ´ë·Î ²Ù¸ç¼­ È£ÃâÇÏ´Â °ÍÀÌ´Ù.

¸ÕÀú layoutÀ» Ãß°¡Çغ¸ÀÚ.

ÁÂÃø TreeÀÇ layout¿¡¼­ ¸¶¿ì½º ¿ìÃø¹öưÀ» Ŭ¸¯ÇÏ¿© »ý¼ºµÈ ÆË¾÷ ¸Þ´º¿¡¼­ AddÀÇ ºÎ¸Þ´º New ItemÀ» ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ È­¸é¿¡ ³ªÅ¸³­´Ù.

Android LayoutÀ» ¼±ÅÃÇϰí Name¿¡ SetDestNameDlg.axmlÀ» ÀÔ·ÂÇϰí Add¸¦ ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ Ãß°¡°¡ µÈ´Ù.

Toolbox¸¦ Ŭ¸¯ÇÏ¿© Text(Medium)À» »ðÀÔÇÑ ÈÄ text¸¦ ¸ñÀûÁö ¼³Á¤À¸·Î ¼öÁ¤Çϰí, Plain Text¸¦ »ðÀÔÇÑ ÈÄ id¸¦ @+id/editTextDest·Î ¼öÁ¤Çϸç, ButtonÀ» »ðÀÔÇÏ¿© text¸¦ È®ÀÎÀ¸·Î id¸¦ @+id/buttonOK·Î ¼öÁ¤ÇÏ¸é ´ÙÀ½°ú °°ÀÌ È­¸éÀÌ º¯°æµÈ´Ù.

ÁÂÃø TreeÀÇ ÇÁ·ÎÁ§Æ®(DialogSample)¿¡¼­ ¸¶¿ì½º ¿ìÃø¹öưÀ» Ŭ¸¯ÇÏ¿© »ý¼ºµÈ ÆË¾÷ ¸Þ´º¿¡¼­ AddÀÇ ºÎ¸Þ´º New ItemÀ» ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ È­¸é¿¡ ³ªÅ¸³­´Ù.

FragmentÀ» ¼±ÅÃÇϰí Name¿¡ SetDestNameDlg.csÀ» ÀÔ·ÂÇϰí Add¸¦ ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ Ãß°¡°¡ µÈ´Ù.

´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.

- Fragment·ÎºÎÅÍ »ó¼Ó ¹ÞÀº SetDestNameDlg¸¦ DialogFragment·ÎºÎÅÍ »ó¼Ó ¹Þµµ·Ï ¼öÁ¤Çϰí, inflater.InflateÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© axml ÆÄÀϰú ¿¬°áÇϵµ·Ï ÇÑ´Ù.

- buttonOK¸¦ ´­·¶À» ¶§ È£ÃâµÇ´Â ÇÔ¼ö¸¦ ¸¸µé¾î editTextDest¿¡ ¾Æ¹«°Íµµ ÀÔ·ÂÇÏÁö ¾ÊÀ¸¸é Toast.MakeTextÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ¸Þ½ÃÁö¸¦ Ç¥ÃâÇØÁÖµµ·Ï ÇÑ´Ù.

- editTextDest¿¡ ÀÔ·ÂÀ» ÇßÀ¸¸é FinishedInputNameÀ̶ó´Â delegate¸¦ ÀÌ¿ëÇÏ¿© ´ëÈ­ »óÀÚ¸¦ È£ÃâÇÑ Activity¿¡ ÀÔ·ÂÇÑ ¹®ÀÚ¿­À» Àü´ÞÇØÁØ ÈÄ(Àá½ÃÈÄ ¼³¸í) Dismiss¸¦ ÀÌ¿ëÇÏ¿© ´ëÈ­ »óÀÚ¸¦ Á¾·áÇϵµ·Ï ÇÑ´Ù.

´ëÈ­ »óÀÚ¸¦ È£ÃâÇÒ ¼ö ÀÖµµ·Ï Execute¶ó´Â ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ¸¸µé¾ú´Ù.

- FragmentManager¸¦ ÀÌ¿ëÇÏ¿© È£ÃâÇÏ´Â Activity¿¡ fragment°¡ ÀÖÀ¸¸é ¶¼¾î³»°í AddToBackStackÇÔ¼ö¸¦ nullÀÎÀڷΠȣÃâÇϵµ·Ï ÇÑ´Ù.

- SetDestNameDlg¸¦ »ý¼ºÇÏ°í ¾Õ¿¡¼­ ¸¸µé¾î ³õÀº finishedInputNameÀ̶ó´Â delegate¿¡ ¿¬°áÀ»ÇÏ°í ´ëÈ­ »óÀÚ¸¦ È£ÃâÇϵµ·Ï ÇÑ´Ù.

¼öÁ¤ ¿Ï·áÇÑ Source´Â ´ÙÀ½°ú °°´Ù.

using Android.App;

using Android.OS;

using Android.Views;

using Android.Widget;

 

namespace DialogSample

{

    public delegate void FinishedInputName(string strText);

    public class SetDestNameDlg : DialogFragment

    {

        public FinishedInputName finishedInputName = null;

        public override void OnCreate(Bundle savedInstanceState)

        {

            base.OnCreate(savedInstanceState);

        }

        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)

        {

            View view = inflater.Inflate(Resource.Layout.SetDestNameDlg, container, false);

            Button button = view.FindViewById<Button>(Resource.Id.buttonOK);

            button.Click += delegate

            {

                EditText text = view.FindViewById<EditText>(Resource.Id.editTextDest);

                string strText = text.Text;

                if (string.IsNullOrEmpty(strText) == true)

                    Toast.MakeText(Activity, "ÀúÀåÇÒ À̸§À» ÀÔ·ÂÇÑ ÈÄ È®ÀÎÀ» ¼±ÅÃÇϼ¼¿ä.", ToastLength.Short).Show();

                else if (finishedInputName != null)

                {

                    finishedInputName(strText);

                    this.Dismiss();

                }

            };

            return view;

        }

 

        public static void Execute(Activity parent, FinishedInputName finishedInputName)

        {

            FragmentTransaction ft = parent.FragmentManager.BeginTransaction();

            //Remove fragment else it will crash as it is already added to backstack

            Fragment prev = parent.FragmentManager.FindFragmentByTag("dialog");

            if (prev != null)

            {

                ft.Remove(prev);

            }

 

            ft.AddToBackStack(null);

 

            SetDestNameDlg dlg = new SetDestNameDlg();

            dlg.Arguments = null;

            dlg.finishedInputName = finishedInputName;

            //Add fragment

            dlg.Show(ft, "dialog");

        }

    }

}

ÀÌÁ¦ ExecuteÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ´ëÈ­ »óÀÚ¸¦ È£ÃâÇØº¸ÀÚ.

¸ÕÀú Main.axmlÀ» ¿­¾î Toolbox¿¡¼­ ButtonÀ» Çϳª »ðÀÔÇϰí id¸¦ @+id/buttonDest·Î ¼öÁ¤ÇÑ´Ù.

MainActivity.cs¸¦ ¿­¾î ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.

- buttonDest¸¦ Ŭ¸¯ÇßÀ» ¶§ È£ÃâµÇ´Â ÇÔ¼ö¸¦ ¸¸µé¾î SetDestName.Execute(ExecuteÀÛ¼º½Ã staticÀ¸·Î ÀÛ¼ºÇßÀ¸¹Ç·Î ÀÌ·±ÇüÅ·ΠȣÃâ)ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

- SetDestNameDlgOK¶ó´Â ÇÔ¼ö¸¦ ¸¸µé°í SetDestNameDlg¿¡¼­ delegate·Î »ý¼ºÇÑ finishedInputName·Î È£ÃâÀÌ °¡´ÉÇϵµ·Ï ExecuteÀÇ µÎ ¹øÂ° ÀÎÀÚ·Î ³Ñ°ÜÁØ´Ù.

½ÇÇàÇÏ¿© ButtonÀ» Ŭ¸¯ÇÏ¸é ´ÙÀ½°ú °°ÀÌ ´ëÈ­ »óÀÚ°¡ È­¸é¿¡ ³ªÅ¸³­´Ù.

¸ñÀûÁö¿¡ ¾Æ¹«°Íµµ ÀÔ·ÂÇÏÁö ¾Ê°í È®ÀÎÀ» ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ ¸Þ½ÃÁö°¡ È­¸é¿¡ ³ªÅ¸³­´Ù.

 

´Ù¿î·Îµå