Adnroid_菜单练习总结

1、通过代码和配置文件生成菜单。

效果图为:

代码如下:

以下代码有通过代码生成,也有配置文件生成,中间用注释分开了,练习时综合在一块了。

package com.example.menu_pratice;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity
{
	Button button = null,button2 = null;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button = (Button) findViewById(R.id.button);
		button.setOnClickListener(new OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				// TODO Auto-generated method stub
				Intent intent = new Intent(MainActivity.this,ContextMenu.class);
				startActivity(intent);
			}
		});
		button2 = (Button) findViewById(R.id.button2);
		button2.setOnClickListener(new OnClickListener()
		{
			
			@Override
			public void onClick(View v)
			{
				// TODO Auto-generated method stub
				Intent intent = new Intent(MainActivity.this,SubMenuActivity.class);
				startActivity(intent);
			}
		});
	}

	//创建选项菜单方法
	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		// Inflate the menu; this adds items to the action bar if it is present.
		//通过配置文件创建菜单按钮
		//getMenuInflater().inflate(R.menu.activity_main, menu);
		
		//通过代码创建菜单按钮
		menu.add(Menu.NONE, Menu.FIRST+1, 1, "添加").setIcon(android.R.drawable.ic_menu_add);
		menu.add(Menu.NONE, Menu.FIRST+2, 2, "删除").setIcon(android.R.drawable.ic_menu_delete);
		menu.add(Menu.NONE, Menu.FIRST+3, 3, "编辑").setIcon(android.R.drawable.ic_menu_edit);
		menu.add(Menu.NONE, Menu.FIRST+4, 4, "详细").setIcon(android.R.drawable.ic_menu_info_details);
		menu.add(Menu.NONE, Menu.FIRST+5, 5, "帮助").setIcon(android.R.drawable.ic_menu_help);
		menu.add(Menu.NONE, Menu.FIRST+6, 6, "保存").setIcon(android.R.drawable.ic_menu_save);
		menu.add(Menu.NONE, Menu.FIRST+7, 7, "发送").setIcon(android.R.drawable.ic_menu_send);
		menu.add(Menu.NONE, Menu.FIRST+8, 8, "更多").setIcon(android.R.drawable.ic_menu_more);
		
		return true;
	}

	//单击每个选项后调用方法
	@Override
	public boolean onOptionsItemSelected(MenuItem item)
	{
		// TODO Auto-generated method stub
		//获取配置文件ID
		/*switch (item.getItemId())
		{
		case R.id.item01:
			Toast.makeText(this, "选择了添加按钮", Toast.LENGTH_SHORT).show();
			break;
		case R.id.item02:
			Toast.makeText(this, "选择了删除按钮", Toast.LENGTH_SHORT).show();
			break;
		case R.id.item03:
			Toast.makeText(this, "选择了详细按钮", Toast.LENGTH_SHORT).show();
			break;
		case R.id.item04:
			Toast.makeText(this, "选择了编辑按钮", Toast.LENGTH_SHORT).show();
			break;
		case R.id.item05:
			Toast.makeText(this, "选择了帮助按钮", Toast.LENGTH_SHORT).show();
			break;
		case R.id.item06:
			Toast.makeText(this, "选择了更多按钮", Toast.LENGTH_SHORT).show();
			break;
		case R.id.item07:
			Toast.makeText(this, "选择了保存按钮", Toast.LENGTH_SHORT).show();
			break;
		case R.id.item08:
			Toast.makeText(this, "选择了发送按钮", Toast.LENGTH_SHORT).show();
			break;
		default:
			break;
		}*/
		
		//获取代码生成菜单的ID
		switch (item.getItemId())
		{
		case Menu.FIRST+1:
			Toast.makeText(this, "选择了添加按钮", Toast.LENGTH_SHORT).show();
			break;
		//.......
		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}

	//每个菜单选项关闭后调用的方法
	@Override
	public void onOptionsMenuClosed(Menu menu)
	{
		// TODO Auto-generated method stub
		//Toast.makeText(this, "选项菜单关闭了", Toast.LENGTH_SHORT).show();
		super.onOptionsMenuClosed(menu);
	}

	//菜单选项调用前做的一些处理
	@Override
	public boolean onPrepareOptionsMenu(Menu menu)
	{
		// TODO Auto-generated method stub
		Toast.makeText(this, "在菜单onCreateOptionsMenu(Menu menu)方法前调用,可以在此做一些预处理", Toast.LENGTH_SHORT).show();
		return super.onPrepareOptionsMenu(menu);
	}
	

}
2、通过代码和配置文件生成上下文菜单。

代码如下:

package com.example.menu_pratice;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class ContextMenu extends Activity
{
	
	private String[] data = new String[]{"zz","cc","dd","ee"};
	private ListView listView = null;
 	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		listView = new ListView(this);
		listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, this.data));
		super.setContentView(listView);
		
		super.registerForContextMenu(listView);
	}
 	
 	//上下文菜单选中时调用该方法
	@Override
	public boolean onContextItemSelected(MenuItem item)
	{
		// TODO Auto-generated method stub
		//通过代码生成的上下文菜单ID
		/*switch (item.getItemId())
		{
		case Menu.FIRST+1:
			Toast.makeText(this, "上下文菜单的aaaaaaaaa", Toast.LENGTH_SHORT).show();
			break;
		case Menu.FIRST+2:
			Toast.makeText(this, "上下文菜单的bbbbbbbbb", Toast.LENGTH_SHORT).show();
			break;
		case Menu.FIRST+3:
			Toast.makeText(this, "上下文菜单的ccccccccc", Toast.LENGTH_SHORT).show();
			break;
		case Menu.FIRST+4:
			Toast.makeText(this, "上下文菜单的ddddddddd", Toast.LENGTH_SHORT).show();
			break;

		default:
			break;
		}*/
		
		//获取配置文件中的上下文菜单的ID
		switch (item.getItemId())
		{
		case R.id.item001:
			Toast.makeText(this, "单击了添加联系人", Toast.LENGTH_SHORT).show();
			break;
		case R.id.item002:
			Toast.makeText(this, "单击了查询详情", Toast.LENGTH_SHORT).show();
			break;
		case R.id.item003:
			Toast.makeText(this, "单击了删除联系人", Toast.LENGTH_SHORT).show();
			break;
		case R.id.item004:
			Toast.makeText(this, "单击了另存为", Toast.LENGTH_SHORT).show();
			break;
		case R.id.item005:
			Toast.makeText(this, "单击了编辑", Toast.LENGTH_SHORT).show();
			break;
		default:
			break;
		}
		return super.onContextItemSelected(item);
	}
	
	//上下文菜单关闭时调用该方法
	@Override
	public void onContextMenuClosed(Menu menu)
	{
		// TODO Auto-generated method stub
		Toast.makeText(this, "上下文菜单关闭了", Toast.LENGTH_SHORT).show();
		super.onContextMenuClosed(menu);
	}
	
	//创建上下文菜单方法
	@Override
	public void onCreateContextMenu(android.view.ContextMenu menu, View v,
			ContextMenuInfo menuInfo)
	{
		// TODO Auto-generated method stub
		super.onCreateContextMenu(menu, v, menuInfo);
		//通过代码生成上下文菜单
		/*menu.setHeaderTitle("这里是上下文菜单");
		menu.add(Menu.NONE, Menu.FIRST+1, 1, "aaaaaaaaaa");
		menu.add(Menu.NONE, Menu.FIRST+2, 2, "bbbbbbbbbb");
		menu.add(Menu.NONE, Menu.FIRST+3, 3, "cccccccccc");
		menu.add(Menu.NONE, Menu.FIRST+4, 4, "dddddddddd");*/
		
		
		//通过配置文件生成菜单
		menu.setHeaderTitle("信息操作");
		super.getMenuInflater().inflate(R.menu.mymenu, menu);
	}
	
}
3、通过代码和配置文件生成,带有子菜单项的菜单。

代码如下:

package com.example.menu_pratice;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast;

/*
 * 创建字菜单项
 */
public class SubMenuActivity extends Activity
{

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.context_menu);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		// TODO Auto-generated method stub
		

		SubMenu fileMenu = menu.addSubMenu("文件"); // 子菜单
		SubMenu editMenu = menu.addSubMenu("编辑"); // 子菜单
		
		// 通过代码生成子菜单
		/*fileMenu.add(Menu.NONE, Menu.FIRST + 1, 1, "新建"); // 子菜单项
		fileMenu.add(Menu.NONE, Menu.FIRST + 2, 2, "打开"); // 子菜单项
		fileMenu.add(Menu.NONE, Menu.FIRST + 3, 3, "保存"); // 子菜单项
		editMenu.add(Menu.NONE, Menu.FIRST + 4, 4, "撤消"); // 子菜单项
		editMenu.add(Menu.NONE, Menu.FIRST + 5, 5, "恢复"); // 子菜单项
*/		
		
		//通过配置文件生成子菜单
		super.getMenuInflater().inflate(R.menu.filemenu, fileMenu) ; 	// 设置菜单项
		super.getMenuInflater().inflate(R.menu.editmenu, editMenu) ; 	// 设置菜单项
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item)
	{
		// TODO Auto-generated method stub
		switch (item.getItemId())
		{ // 判断菜单项ID
		case Menu.FIRST + 1:
			Toast.makeText(this, "您选择的是“新建”项。", Toast.LENGTH_LONG).show();
			break;
		case Menu.FIRST + 2:
			Toast.makeText(this, "您选择的是“打开”项。", Toast.LENGTH_LONG).show();
			break;
		case Menu.FIRST + 3:
			Toast.makeText(this, "您选择的是“保存”项。", Toast.LENGTH_LONG).show();
			break;
		case Menu.FIRST + 4:
			Toast.makeText(this, "您选择的是“撤销”项。", Toast.LENGTH_LONG).show();
			break;
		case Menu.FIRST + 5:
			Toast.makeText(this, "您选择的是“编辑”项。", Toast.LENGTH_LONG).show();
			break;
		}
		
		return super.onOptionsItemSelected(item);

	}
}

如需源码,请在此下载:

http://download.csdn.net/download/zlfxy/5161152

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值