网络111 刘修军
Android中的菜单有两种,一种是通过MENU键激活,叫Options Menu;另一种是当用户长按一个元素时激活,叫Context Menu。
- Options Menu
在Activity里面,一般通过以下方法来使用Options Menu:
(1)onCreateOPtionsMenu(Menu menu) 创建Options Menu,这个方法只会在menu第一次显示时调用。
(2)onPrepareOptionsMenu(Menu menu) 更新改变Options Menu的内容,这个方法会在menu每次显示时调用。
(3)onOptionsItemSelected(MenuItem item)处理选中的菜单。
Options Menu示例:
代码:
package com.MenuTest; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.widget.EditText; public class MenuTestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); t1=(EditText) findViewById(R.id.t1); } EditText t1; @Override public boolean onCreateOptionsMenu(Menu menu)//创建Option Menu菜单,只会在Menu第一次显示时调用 { super.onCreateOptionsMenu(menu); menu.add(1,1,1,"菜单1"); menu.add(1,2,2,"菜单2"); menu.add(1,3,3,"菜单3"); SubMenu submenu=menu.addSubMenu(1,4,4,"菜单4");//添加子菜单 submenu.add("子菜单1"); submenu.add("子菜单2"); submenu.add("子菜单3"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) //处理选中的菜单项;单击某个菜单项时,将菜单Text值赋给EditText { super.onOptionsItemSelected(item); switch(item.getItemId())//获得菜单的ID编号 { case 1: t1.setText("菜单1");break; case 2: t1.setText("菜单2");break; case 3: t1.setText("菜单3");break; case 4: t1.setText("菜单4");break; } return true; } }
2. Context Menu
在Activity里面,一般通过以下方法来使用Context Menu:
(1) registerForContextMenu(View view) 为某个View 注册Context Menu,一般在Activity的onCreate里面调用。
(2)onCreateContextMenu(ContextMenu menu,View v,ContextMenu context MenuInfo menuinfo)创建context menu,和 Options Menu不同,context menu每次是显示时都会调用这个方法。
(3) onContextItemSelected(MenuItem item)处理选中的菜单项。
Context Menu示例:
代码:
package com.MyContext; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.View; import android.widget.Button; public class MyContextActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button1=(Button) findViewById(R.id.button1); this.registerForContextMenu(button1); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle("Context Menu"); menu.add("菜单1"); menu.add("菜单2"); menu.add("菜单3"); } }