您的位置:首页 > 其它

Adnroid_菜单练习总结

2013-03-20 11:33 197 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: