标签:
1、Menu.FIRST在reference中描述为:First value for group and item identifier integers.我们可以理解为ID设置的最小数值。
2、setDefaultKeyMode (int mode) 用来设置一个Activity的默认的按键模式,
也就是指这种情况,当Activity中发生了一些按键事件,但是这些事件没有被任何控件Listen到时(截获时),
系统应该如何处理这些按键事件。
mode一共有五种
- DEFAULT_KEYS_DISABLE //直接丢弃,这种情况你把键盘按穿了也不会有系统理你
- DEFAULT_KEYS_DIALER //将键盘事件传入拨号器进行处理
- DEFAULT_KEYS_SHORTCUT //将键盘输入作为当前窗体上注册的快捷键,进行快捷键处理
- DEFAULT_KEYS_SEARCH_LOCAL //将键盘输入作为搜索内容,进行本地搜索,如果本地没有实现自定义搜索,则使用全局搜索
- DEFAULT_KEYS_SEARCH_GLOBAL //将键盘输入作为搜索内容,进行全局搜索
3、intent相关函数解析:
Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。利用Intent所实现的软件复用的粒度是Activity/Service,比函数复用更高一些,另外耦合也更为松散。
settype
使用该函数表示要查找文件的mime类型(如*/*),这个和组件在manifest里定义的相对应,但在源代码里:
1 public Intent setData(Uri data) {
2 mData = data;
3 mType = null;
4 return this;
5 }
View Code
作用是将type设为null。
setdata
该函数的参数是uri,所以要将数据通过该函数传递时,记得要把数据转化为uri,如Uri.fromFile(new File("/mnt/sdcard/"))。
1 public Intent setType(String type) {
2 mData = null;
3 mType = type;
4 return this;
5 }
View Code
要同时设置data和type的话只能用函数setdataandtype了
1 public Intent setDataAndType(Uri data, String type) {
2 mData = data;
3 mType = type;
4 return this;
5 }
View Code
4、setOnCreateContextMenuListener
所有的View 都可以监听setOnCreateContextMenuListener事件,长按都会弹出上下文菜单
View.setOnCreateContextMenuListener(OnCreateContextMenuListener l)
或者在activity里面注册view的上下文菜单
registerForContextMenu(View view)
重写
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item){
if (item.getItemId() == 0){
//处理点击上下文菜单事件
}
}
处理对应的事件。
--------------------------------------------------------------------------
长按ListView中的一项item弹出上下文菜单
只需要监听ListView的 setOnCreateContextMenuListener事件即可
然后重写对应的方法,同上面的一样。
在onContextItemSelected中获取 ListView中item对象
@Override
public boolean onContextItemSelected(MenuItem item){
AdapterContextMenuInfo itemInfo = (AdapterContextMenuInfo)item.getMenuInfo();
// adapter ListView 中用到的适配器
Object itemValue = adapter.getItem(itemInfo.position);
//获取到item对象后就可以进行任何操作了
}
----------------------------------------------------------------------------
单击View弹出上下文菜单
View.setOnCreateContextMenuListener(OnCreateContextMenuListener l)
View.setOnClickListener(OnClickListener l)
需要同时监听view的单击事件和上下文菜单事件
然后在View的onClick调用 View.showContextMenu()方法。
如下
View.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
View.showContextMenu();
}
);
然后重新对应的方法,同上一个一样。
这样,不论单击或者长按,都可以弹出上下文菜单。
只要能监听到view对应的事件,应该都可以弹出上下文菜单,不过没有经过测试。
5、解决:在Activity中为什么要用managedQuery()?
在实际做项目时,有时数据库经常会报cursor not close的warning,有的cursor你可以手动关闭,但是有一些就不可以了,比如当前是个listActivity,
他的adapter是个cursorAdapter,这里的cursor就不能关掉,当然你可以在onDestroy中做关闭的操作,可是我比较习惯把cursor定义为局部变量,不是全局可见的,
这样的话你就不能在onDestroy中关闭了。
后来就查看源代码,发现manageQuery可以为你维护这个cursor。在你退出activity时为你自动关闭
用getContentResolver().query(...)时有时会报cursor not close的warning。
android 边学边记 2015.10.16
标签:
原文地址:http://www.cnblogs.com/UniqueColor/p/4886550.html