创建OptionMenu和ContextMenu
来源:互联网 发布:合肥科研知乎 编辑:程序博客网 时间:2024/06/05 16:35
今天自学的是创建菜单项,比较简单,直接上代码:
这里主页面布局是用了系统给的id,以至于后面都不用创建ListView对象和关联ListView的id了,挺省事的,不过一个项目有多个ListView时就该自己写id了吧,书上作者偷懒,不怪我。
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<TextView android:id="@android:id/empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="20sp"
android:text="无歌曲"/>
功能为获取手机音乐类表的主代码:
private Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_music);
registerForContextMenu(getListView());// 为列表注册菜单项
ContentResolver resolver = getContentResolver();
//从内容提供者中获得SD卡上的音乐列表
cursor = resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
String[] cols = new String[] { MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST };
int[] ids = new int[] { R.id.track_name, R.id.artist };
if (cursor != null) {
startManagingCursor(cursor);
//SimpleCursorAdapter的使用SimpleCursorAdapter(Context, int, Cursor, String[], int[])
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.songs_list, cursor, cols, ids);
setListAdapter(adapter);
}
}
创建OptionMenu菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 添加菜单选项
menu.add(0, 0, 0, "退出");
menu.add(0, 1, 1, "扫描");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
int itemid = item.getItemId();
switch (itemid) {
case 0:
AlertDialog.Builder builder = new Builder(this);
builder.setMessage("是否退出?");
builder.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 这里并没有实现对话框显示的功能
dialog.dismiss();
}
});
builder.create().show();
break;
case 1:
AlertDialog.Builder builder1 = new Builder(this);
builder1.setMessage("是否扫描本机?");
builder1.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 这里并没有实现对话框显示的功能
dialog.dismiss();
}
});
builder1.create().show();
break;
}
return true;
}
创建ContextMenu菜单:
这里要在主线程中注册一下registerForContextMenu(getListView());// 为列表注册菜单项
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.context_menu, menu);
// menu.add(0, 0, 0, "删除");
// menu.add(0,1,0,"属性");
Log.i("info", "+++++");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
//获得AdapterContextMenuInfo对象,进而得到当前选中条目的id或position信息
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
int id = item.getItemId();
switch (id) {
case R.id.ctx_delete:
cursor.moveToPosition(info.position);
AlertDialog.Builder builder = new Builder(this);
builder.setMessage("是否退出?");
builder.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 这里并没有实现对话框显示的功能
dialog.dismiss();
}
});
builder.create().show();
break;
case R.id.ctx_property:
cursor.moveToPosition(info.position);
Toast.makeText(this, "属性", 2000).show();
break;
}
return super.onContextItemSelected(item);
}
ContextMenu的context_menu.xml文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/ctx_delete" android:orderInCategory="1"
android:menuCategory="container" android:title="删除"/>
<item android:id="@+id/ctx_property" android:orderInCategory="2"
android:menuCategory="container" android:title="属性"/>
</menu>
- 创建OptionMenu和ContextMenu
- android中OptionMenu和ContextMenu创建
- OptionMenu和ContextMenu使用介绍
- 关于OptionMenu和ContextMenu的实现
- contextMenu和OPtionMenu的点击事件同时相应问题
- OptionMenu 和 ContextMenu (系统菜单栏——上下文菜单栏)
- android应用开发详解(四)----------各种菜单(optionmenu、contextmenu、submenu)和Toast的使用
- Android OptionMenu (选项菜单) 和 ContextMenu (上下文菜单) 、 SubMenu (子菜单)
- contextMenu OptionMenu ListView DatePicker联合使用
- Qt contextMenu的创建和使用
- Qt contextMenu的创建和使用
- Qt contextMenu的创建和使用
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- Android之ContextMenu的使用方法以及与OptionMenu的区别
- Android-三种菜单栏实现(OptionMenu,SubMenu,ContextMenu)
- 1038. 统计同成绩学生(20)
- linux命令
- STM32F103内部弱上拉弱下拉电阻阻值的大小
- iOS基础知识:预处理指令
- UGUI(2)摄像机渲染纹理
- 创建OptionMenu和ContextMenu
- 指针函数与函数指针
- hdu 1018
- 记一次ORACLE 8I standby增加数据文件操作
- 如何在Mac OSX下编译 ACE
- storm 开发系列三 Clojue编写程序读取kafka数据并写入到hdfs
- org.xml.sax.SAXException: No input specified
- php链接mysql出现的权限问题
- 二进制、八进制、十进制、十六进制之间的相互转换