´ëÈ »óÀÚ Ç¥½Ã
½º¸¶Æ®Æù¿¡¼ ´ëÈ »óÀÚ ÇüŸ¦ Ç¥ÇöÇÏ´Â ¹æ¹ýÀº 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À» Ŭ¸¯ÇÏ¸é ´ÙÀ½°ú °°ÀÌ ´ëÈ »óÀÚ°¡ ȸ鿡 ³ªÅ¸³´Ù.
¸ñÀûÁö¿¡ ¾Æ¹«°Íµµ ÀÔ·ÂÇÏÁö ¾Ê°í È®ÀÎÀ» ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ ¸Þ½ÃÁö°¡ ȸ鿡 ³ªÅ¸³´Ù.
´Ù¿î·Îµå