码迷,mamicode.com
首页 > 移动开发 > 详细

android 边学边记 2015.10.16

时间:2015-10-16 23:09:57      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!