zoukankan      html  css  js  c++  java
  • MenuItem offlogin = menu.getItem(0); offlogin.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override

    在android开发中,menu的应用是个麻雀虽小却很实用的一个UI部件,它的出现让开发者的部署空间大大增加,当然,张小龙先生一直很讨厌APP的空间布局二维化,这个是仁者见仁智者见智的事情了。

    废话不多说,几天晚上上网找了几篇关于menu开发的文章,但是清一色的发现都是以menu的JAVA布局开发为主,基本都用到了menu.add属性,本人是个很不喜欢把布局和后台逻辑给混为一体的人,一直觉得在JAVA中控制UI的布局很杂乱,因此找了篇依赖xml设置布局的文章与大家分享吧。

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
    3.     <item  
    4.         android:id="@+id/close"  
    5.         android:icon="@drawable/ic_launcher"  
    6.         android:orderInCategory="3"  
    7.         android:title="Close"/>  
    8.     <item  
    9.         android:id="@+id/no_icon"  
    10.         android:orderInCategory="2"  
    11.         android:title="Sans Icon"/>  
    12.     <item  
    13.         android:id="@+id/disabled"  
    14.         android:enabled="true"  
    15.         android:orderInCategory="4"  
    16.         android:title="Disabled"/>  
    17.     <!-- orderInCategory表示的是item的排序-->  
    18.     <group  
    19.         android:id="@+id/other_stuff"  
    20.         android:menuCategory="secondary"  
    21.         android:visible="true" >  
    22.         <item  
    23.             android:id="@+id/later"  
    24.             android:orderInCategory="0"  
    25.             android:title="2nd-To-Last"/>  
    26.         <item  
    27.             android:id="@+id/last"  
    28.             android:orderInCategory="1"  
    29.             android:title="Last"/>  
    30.     </group>  
    31.     <!--表示的是二级菜单-->  
    32.     <item  
    33.         android:id="@+id/submenu"  
    34.         android:orderInCategory="3"  
    35.         android:title="A Submenu">  
    36.         <menu>  
    37.             <item  
    38.                 android:id="@+id/non_ghost"  
    39.                 android:alphabeticShortcut="n"  
    40.                 android:title="Non-Ghost"  
    41.                 android:visible="true"/>  
    42.             <item  
    43.                 android:id="@+id/ghost"  
    44.                 android:alphabeticShortcut="g"  
    45.                 android:title="A Ghost"  
    46.                 android:visible="true"/>  
    47.         </menu>  
    48.     </item>  
    49.   
    50. </menu>  
    51.   
    52.   
    53. package com.src.hero.org;  
    54.   
    55. import android.app.Activity;  
    56. import android.os.Bundle;  
    57. import android.util.Log;  
    58. import android.view.Menu;  
    59. import android.view.MenuInflater;  
    60. import android.view.MenuItem;  
    61.   
    62. /**  
    63.  * Receiver To Study  
    64.  *   
    65.  * @author Hero  
    66.  *   
    67.  */  
    68. public class ReceiverActivity extends Activity {  
    69.     /** Called when the activity is first created. */  
    70.     private static final String TAG="ReceiverActivity";  
    71.   
    72.     @Override  
    73.     public void onCreate(Bundle savedInstanceState) {  
    74.         super.onCreate(savedInstanceState);  
    75.         setContentView(R.layout.main);  
    76.   
    77.     }  
    78.   
    79.     @Override  
    80.     public boolean onCreateOptionsMenu(Menu menu) {  
    81.         // TODO Auto-generated method stub  
    82.         MenuInflater mflater=new MenuInflater(this);  
    83.         mflater.inflate(R.menu.menuitem, menu);  
    84.         return super.onCreateOptionsMenu(menu);  
    85.     }  
    86.   
    87.     @Override  
    88.     public boolean onOptionsItemSelected(MenuItem item) {  
    89.         // TODO Auto-generated method stub  
    90.         switch(item.getItemId()){  
    91.         case R.id.close:  
    92.             Log.v(TAG, "------------close");  
    93.             break;  
    94.         case R.id.no_icon:  
    95.             Log.v(TAG, "------------noicon");  
    96.             break;  
    97.         case R.id.submenu:  
    98.             Log.v(TAG, "------------submenu");  
    99.             break;  
    100.         case R.id.non_ghost:  
    101.             Log.v(TAG, "------------non_ghost");  
    102.             break;  
    103.         case R.id.ghost:  
    104.             Log.v(TAG, "------------ghost");  
    105.             break;  
    106.         case R.id.disabled:  
    107.             Log.v(TAG, "------------disabled");  
    108.             break;  
    109.         case R.id.last:  
    110.             Log.v(TAG, "------------last");  
    111.             break;  
    112.         case R.id.later:  
    113.             Log.v(TAG, "------------laster");  
    114.             break;  
    115.         default:  
    116.             break;  
    117.         }  
    118.         return super.onOptionsItemSelected(item);  
    119.     }  
    120.       
    121.       
    122.       
    123.   
    124. }  

    这个代码大家基本看过之后都一目了然,没有太多需要解说的地方,就是安卓开发的一贯步骤,先重写,设定监听器等等。

    值得一提的是,监听部分作者利用的是switch(item.getItemId());该方法使用起来有个不好的地方就是当有大量代码需要操作的话会使得代码看起来很繁乱。事实上,MenuItem off = (MenuItem) findViewById(R.id.off);是无法取得item的实例对象的,应该是

    MenuItem offlogin = menu.getItem(0);
    offlogin.setOnMenuItemClickListener(new OnMenuItemClickListener()
    {
    @Override
    public boolean onMenuItemClick(MenuItem item){
    System.out.println("off");
    return false;
    }
    });
    return true;

    这样才是正确的方法,单个绑定监听器的方法可以如此完成。其中,getItem()的参数在android:orderInCategory中定义。

    这样就可以单独给每个按键设定监听器,也做到了布局文件和逻辑算法相互隔离的作用。(zhuzheic)

    参考网址:http://blog.csdn.net/hwl1314/article/details/7540829

  • 相关阅读:
    Cycling Label
    设置Eclipse的类文件和xml文件代码自动补全
    搭建maven环境
    Android依赖管理与私服搭建
    Cname与A记录(Address)区别
    mysql5.6.34在默认配置文件修改字符集为utf8后重启mysql服务没效果
    PHP将HTML的内容保存成word文档
    常用 Git 命令清单
    广告中的AdNetwork、AdExchange、DSP、SSP、RTB和DMP是什么?
    PHP两个日期之间的所有日期
  • 原文地址:https://www.cnblogs.com/zhuzheic/p/2619244.html
Copyright © 2011-2022 走看看