android 邊學邊記 2015.10.16

來源:互聯網
上載者:User

標籤:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.