博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 建立Menu选单&&onOptionsItemSelected (转)
阅读量:5088 次
发布时间:2019-06-13

本文共 3149 字,大约阅读时间需要 10 分钟。

/** 当Menu有命令被选择时,会调用此方法 */ 

    @Override 

    public boolean onOptionsItemSelected(MenuItem item) {  

        switch (item.getItemId()) {  

        case ADD_ID:  

            setTitle("添加");// 将title设置为"添加"  

            break;  

 

        case DELETE_ID:  

            setTitle("删除");// 将title设置为"删除"  

            break;  

 

        case EXIT_ID:  

            finish();// 退出程序  

            break;  

        }  

        // 返回false允许正常的菜单处理资源,若返回true,则直接在此毁灭它  

        return super.onOptionsItemSelected(item);  

    }  

 

package com.misoo;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

 

public class ex01 extends Activity {

         /** 给定各菜单项对应ID值,以区别之,能保证这些值不同就行了 */

         public static final int ADD_ID = Menu.FIRST;// 添加命令对应ID值

         public static final int DELETE_ID = Menu.FIRST + 1;// 删除命令对应ID值

         public static final int EXIT_ID = Menu.FIRST + 2;// 退出命令对应ID值

 

         /** 当activity首次被创建时被调用 */

         @Override

         public void onCreate(Bundle savedInstanceState) {

                   super.onCreate(savedInstanceState);

                   setContentView(R.layout.main);// 根据main.xml的布局来显示

         }

 

         /** 只有当Menu菜单首次被显示时会调用此方法 */

         @Override

         public boolean onCreateOptionsMenu(Menu menu) {

                   boolean b = super.onCreateOptionsMenu(menu);

                   /**

                    * menu.add(int groupId, int itemId, int order, CharSequence title)

                    * groupId为组ID,这里用不到,所以设置成Menu.NONE

                    * itemId为项ID,当命令被点击时,要区别点击的命令,所以设置以不同的ID

                    * order为排列次序,值越小排的越前(不能为负数),这里按添加顺序排,所以也设置成Menu.NONE

                    * title为要显示的命令名称,这里是根据res/values/strings.xml的name名称去取相应的value

                    * 估计这样处理是为了日后若要更改这些值,就直接在XML里修改,可以不必改动代码

                    */

                   menu.add(Menu.NONE, ADD_ID, Menu.NONE, R.string.menu_add);

                   menu.add(Menu.NONE, DELETE_ID, Menu.NONE, R.string.menu_delete);

                   menu.add(Menu.NONE, EXIT_ID, Menu.NONE, R.string.menu_exit);

                   return b;// 如果返回值不为true,则Menu菜单将不会显示

         }

 

         /** 当每次Menu显示时,会调用此方法 此例中没用到*/

         @Override

         public boolean onPrepareOptionsMenu(Menu menu) {

                   return super.onPrepareOptionsMenu(menu);

         }

 

         /** 当每次Menu关闭时,会调用此方法 此例中没用到*/

         @Override

         public void onOptionsMenuClosed(Menu menu) {

                   super.onOptionsMenuClosed(menu);

         }

 

         /** 当Menu有命令被选择时,会调用此方法 */

         @Override

         public boolean onOptionsItemSelected(MenuItem item) {

                   switch (item.getItemId()) {

                   case ADD_ID:

                            setTitle("添加");// 将title设置为"添加"

                            break;

 

                   case DELETE_ID:

                            setTitle("删除");// 将title设置为"删除"

                            break;

 

                   case EXIT_ID:

                            finish();// 退出程序

                            break;

                   }

                   // 返回false允许正常的菜单处理资源,若返回true,则直接在此毁灭它

                   return super.onOptionsItemSelected(item);

         }

 

}

 

 下边为res/values/string.xml

 

view plaincopy to clipboardprint?

<?xml version="1.0" encoding="utf-8"?> 

<resources> 

    <string name="hello">Hello World, ex01!</string> 

    <string name="app_name">ex01</string> 

    <string name="menu_add">Add Item</string> 

    <string name="menu_delete">Del Item</string> 

    <string name="menu_exit">Exit</string> 

</resources>   

本文来自CSDN博客,转载请标明出处:

 

 

menu.add的方法中的参数:

第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。可以用到的方法有:
removeGroup(id)
setGroupCheckable(id, checkable, exclusive)
setGroupEnabled(id,boolean enabled)
setGroupVisible(id,visible)
个人认为,当你需要在不同场合下显示不同的menu的时候,合理使用这个参数将更为有效的处理菜单的显示。否则一般情况下都归为一组。
第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个Menu中的选项。在后面使用菜单的时候,就是靠这个item ID来判断,你选中的是哪个选项。
第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的顺序来显示。
第四个String类型的title参数,表示选项中显示的文字。
再看看setIcon方法,就是为菜单添加图标显示,使用用资源文件。

转自: http://blog.csdn.net/a_moon721/article/details/5880260

 

转载于:https://www.cnblogs.com/YangBinChina/p/3706816.html

你可能感兴趣的文章
QTabWidget 使用小记
查看>>
Ubuntu下不重装系统安装SSD总结
查看>>
地图的可视化--Folium
查看>>
Java 基础 IO流
查看>>
SPOJ 913 Query on a tree II
查看>>
SQL
查看>>
Check if rabbitmq run on your host
查看>>
hdu 4282 枚举,非二分
查看>>
C# 字符串处理—— 去除首位保留其他
查看>>
网络销售
查看>>
Codeforces Round #479 (Div. 3) A. Wrong Subtraction
查看>>
归并排序及应用 (nyoj 117 求逆序数)
查看>>
网络流模板
查看>>
html分享QQ,微信,显示分享图片,标题,简介
查看>>
网络编程start
查看>>
04 Python爬虫之Beautiful Soup库
查看>>
BZOJ4025 二分图
查看>>
tensor flow中summary用法总结
查看>>
怎么解决docker pull拉取镜像速度过慢的问题
查看>>
lr_save_string和sprintf、lr_eval_string的使用
查看>>