Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發之核心特性SearchView的開發使用(源代碼分享)

Android開發之核心特性SearchView的開發使用(源代碼分享)

編輯:關於Android編程

在Android上,搜索是一個核心用戶特性。用戶可以搜索可用的任何數據,不管內容是存促於設備本身或者需要通過網絡訪問。Android提供了一個搜索框架為用戶創建一個一致的搜索體驗,可以幫助你實現搜索應用程序。搜索框架提供兩種搜索模式:一個搜索對話框(Search Dialog)位於搜索屏幕的頂部或窗口小部件(SearchView),可以將其嵌入到你的布局中。在這兩種情況下,Android系統將幫助你搜索實現交付執行搜索的任務給一個特定的Activity。效果如下圖所示。

\

當用戶需要執行一個搜索的搜索對話框或搜索小部件,系統創建一個Intent和存儲用戶Query,然後系統會啟動你事先聲明的用於執行數據查找的Activity,,使用它進行數據搜尋。總共需要以下三個步驟。

(1)建立一個Search.XML文件在res/xml文件中

一個XML文件,配置一些search dialog或widget的設置。它包括設置特性,比如語音搜索,搜索建議和提示文本搜索框。




(2)聲明一個SearchActivity

這個Activiy接收搜索用戶的數據,並顯示搜索結果。特別注意的是為了使調用的Activity找到這個SearchActivity,你必須首先聲明Android搜索Activitydao到你的清單文件。如下所示。

    
        
            
        
        
    
    ...

SearchActivity要完成以下三個步驟。1 接收查詢 2 搜索您的數據3 展示結果。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search);
    handleIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
    setIntent(intent);
    handleIntent(intent);
}

private void handleIntent(Intent intent) {
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query = intent.getStringExtra(SearchManager.QUERY);
      doMySearch(query);
    }
}

之前看博客又看到有人說onNewIntent()不知道幾時促發的,我研究了下官方文檔上面是這麼寫的。如果我們將android:launchMode設置為“singleTop”,然後SerachActivity接收ACTION_SEARCH intent 會調用 onNewIntent()方法。

(3)建立一個搜索界面

搜索界面包含兩種類型SearchDialog和SearchWidget。SerachDialog:默認情況下,搜索對話框隱藏,我們通過調用onSearchRequested()(當用戶按搜索按鈕)讓他顯示在屏幕上端,SearchWidget :允許用戶將搜索框放在布局的任意位置,但通常需要跟actionbar結合。

搜索界面的Activity也需要在清單文件聲明

  
        
        
    

    public class OtherActivity extends Activity{  
        private Button mStartSearch;  
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.search_invoke);  
            //就一個按鈕  
            mStartSearch = (Button)findViewById(R.id.btn_start_search);  
            //啟動搜索框  
            mStartSearch.setOnClickListener(new OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                    onSearchRequested();  
                }  
            });  
        }  
      
            //重寫onSearchRequested方法  
        @Override  
        public boolean onSearchRequested() {  
                   //除了輸入查詢的值,還可額外綁定一些數據  
            Bundle appSearchData = new Bundle();  
            appSearchData.putString("demo_key","text");  
              
            startSearch(null, false, appSearchData, false);   
                    //必須返回true。否則綁定的數據作廢  
            return true;  
        }     
      
    }  


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved