標籤:res 寫檔案 span 存在 本質 1.2 回調 ons 是什麼
1. SearchView
SearchView是個操作視圖,所謂操作視圖,就是可以內建在工具列中的視圖。SearchView可以讓整個搜尋介面完全內建在應用的工具列中。
1.1 SearchView的配置
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menu_item_search" android:title="@string/search" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="ifRoom" /></menu>
app:actionViewClass指定android.support.v7.widget.SearchView值,告訴工具列要顯示 SearchView 。
之後通過 onCreateOptionsMenu()方法進行執行個體化菜單XML檔案,這樣,工具列就能顯示定義在菜單XML中的選項了。
1.2 SearchView的使用
對其執行個體化,然後設定回調的介面。
MenuItem searchItem = menu.findItem(R.id.menu_item_search); //將MenuItem取出並儲存在searchItem變數中。 mSearchView = (SearchView)searchItem.getActionView(); //取出SearchView對象。 //設定監聽器 mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String s) {//提交搜尋查詢時。這個方法執行。 Log.d(TAG, "onQueryTextSubmit: "+ s); return true; } @Override public boolean onQueryTextChange(String s) { //搜尋方塊的文字有變化時,這個方法執行。 Log.d(TAG, "onQueryTextChange: " + s); return false; } });
2.使用 shared preferences 實現輕量級資料存放區
shared preferences本質上就是檔案系統中的檔案,可使用 SharedPreferences 類讀寫它。SharedPreferences 執行個體用起來更像一個索引值對倉庫(類似於 Bundle ),但它可以通過持久化儲存儲存資料。索引值對中的鍵為字串,而值是原子資料類型。進一步查看shared preferences檔案可知,它們實際上是一種簡單的XML檔案,但 SharedPreferences 類已屏蔽了讀寫檔案的實現細節。shared preferences檔案儲存在應用沙箱中,所以,類似密碼這樣的敏感資訊不應該用它來儲存。
要 獲 得 定 制 的 SharedPreferences 實 例 , 可 使 用 Context.getSharedPreferences(String,int) 方法。然而,在實際開發中,我們並不關心具體是什麼樣的 SharedPreferences執行個體,只要它能共用於整個應用就可以了。這種情況下,最好使用 PreferenceManager.getDefaultSharedPreferences(Context) 方法,該方法會返回具有私人許可權和預設名稱的執行個體(僅在當前應用內可用)。
Shared Preference 樣本:
public class QueryPreferences { private static final String PREF_SEARCH_QUERY = "searchQuery"; public static String getStoredQuery(Context context) { return PreferenceManager.getDefaultSharedPreferences(context).getString(PREF_SEARCH_QUERY, null); } public static void setStoredQuery(Context context, String query) { PreferenceManager.getDefaultSharedPreferences(context) .edit() .putString(PREF_SEARCH_QUERY, query) .apply();
}}
安卓權威編程指南-筆記(第25章 搜尋)