处理Menu功能菜单及"loading"对话框
来源:互联网 发布:婚前协议 知乎 编辑:程序博客网 时间:2024/06/05 15:13
一般的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();
怎么样是不是超级简单呢?最后,我们为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();
出自
- 处理Menu功能菜单及"loading"对话框
- MonoDroid学习笔记(七)—— 处理Menu功能菜单及"loading"对话框
- MonoDroid学习笔记(七)—— 处理Menu功能菜单及"loading"对话框
- Menu功能菜单 android
- Android Menu功能菜单
- Jquery实现菜单处理menu
- Android开发--身高体重指数(BIM)计算--添加菜单(Menu)(菜单功能、创建菜单、处理选项动作)
- Joomla! 使用手册 - 菜单及菜单项(Menu & Menu Item) 【转】
- Android 开发之menu功能菜单
- android 自定义menu菜单按键功能
- 关于程序信息,Menu功能菜单程序设计
- Menu菜单的创建和事件处理
- android loading界面 及 处理
- android loading界面 及 处理
- Android中的Menu功能菜单-OptionsMenu[选项菜单]
- struts2 menu菜单及权限管理
- VC 对话框程序 menu菜单响应UPDATE_COMMAND_UI 消息
- android之菜单及对话框
- OpenStack高可用 -- 本地文件系统规划,Raid与LVM ( by quqi99 )
- HDU1195 Open the Lock
- POJ 1845 Sumdiv(质因数分解+快速幂+二分法求等比数列的和)
- HDU-2075
- 暑期实习20之android简单应用开发
- 处理Menu功能菜单及"loading"对话框
- linux下简单的网络配置命令
- hdu3062 Party(2-SAT入门)
- NPAPI插件开发学习:插件中多个dll文件的打包
- freopen()函数在ACM中的使用
- hdu 3360
- MP3文件格式之VBR文件第一帧结构
- Android hello world
- Linux下获取硬盘相关信息