MonoDroid学习笔记(七)—— 处理Menu功能菜单及"loading"对话框

一般的Android手机上都会有Menu键,那么我们怎么来处理Menu的菜单项和它的点击事件呢?下面这个例子就示范了“关于”对话框和“离开”等功能。

要为菜单添加菜单项,就要重写Activity中的OnCreateOptionsMenu方法,而要响应菜单的点击事件,就要重写OnOptionsItemsSelected方法:

public override bool OnCreateOptionsMenu(IMenu menu) { menu.Add(0, 0, 0, new Java.Lang.String("关于")); menu.Add(0, 1, 1, new Java.Lang.String("退出")); return base.OnCreateOptionsMenu(menu); } public override bool OnOptionsItemSelected(IMenuItem item) { bool b = base.OnOptionsItemSelected(item); switch (item.ItemId) { case 0: MessageBox.Show(this, "信息", "欢迎访问区健的博客:http://blog.csdn.net/ojlovecd"); break; case 1: MessageBox.Confirm(this, "提示", "确定离开吗?", delegate { this.Finish(); }, delegate { }); break; } return b; }

其中的MessageBox.Confirm是我新增的MessageBox类的静态方法,用以提示用户是否要执行操作:

public class MessageBox { private static AlertDialog.Builder CreateDialog(Context ctx, string title, string message) { AlertDialog.Builder dlg = new AlertDialog.Builder(ctx); return dlg.SetTitle(title).SetMessage(message); } public static void Show(Context ctx, string title, string message) { CreateDialog(ctx, title, message).SetPositiveButton("确定", delegate { }).Show(); } public static void Confirm(Context ctx, string title, string message, EventHandler<DialogClickEventArgs> okHandler, EventHandler<DialogClickEventArgs> cancelHandler) { CreateDialog(ctx, title, message).SetPositiveButton("确定", okHandler).SetNegativeButton("取消", cancelHandler).Show(); } public static void ShowErrorMessage(Context ctx, Exception ex) { Show(ctx, "错误", ex.Message); } }

 

常看见很多程序或网站里都有“加载中”的对话框,在Android里,要实现这个效果,实在是太easy了,通过ProgressDialog即可轻松完成。需要留意的是,ProgressDialog必须在后台程序运行完毕之前以Dismiss()方法来关闭并取得焦点的对话框,否则程序就会陷入无法终止的无穷循环中。所以,在下面的例子中,我们以线程Thread来模拟后台程序的运行,再通过线程运行完毕时,关闭这个加载中的动画对话框。

ProgressDialog pd = ProgressDialog.Show(v.Context, new Java.Lang.String("提示"), new Java.Lang.String("正在获取数据,请稍后……"), true); Java.Lang.Thread th = new Java.Lang.Thread(() => { try { Java.Lang.Thread.Sleep(3000); } finally { pd.Dismiss(); } }); th.Start();

MonoDroid学习笔记(七)—— 处理Menu功能菜单及"loading"对话框_第1张图片

 

怎么样是不是超级简单呢?最后,我们为AlerDialog增添选择功能来结束这一次的学习。

AlertDialog.Builder dlg = new AlertDialog.Builder(v.Context); string[] items = { "猪肉干", "牛肉干", "猪肉松", "牛肉松", "猪肉柳", "牛肉柳", "猪肉粒", "牛肉粒" }; dlg.SetTitle("请选择你最喜欢的黄胜记").SetItems(items, (sender, e) => { MessageBox.Show(v.Context, "", string.Format("你最喜欢的是:{0}", items[(int)e.Which])); }); dlg.Show();

 


你可能感兴趣的:(thread,exception,android,String,Class,menu)