2012-08-31 74 views

回答

0

我的解決方案竟然很簡單。顯然,我沒有正確設置活動的android:launchMode。理想情況下,提供搜索功能的活動應該是單個頂部,因此用戶在單擊「返回」按鈕時不必在以前的所有搜索中向後導航。我的不是。因此,每次搜索時,我的搜索活動的新實例都已啓動並添加到視圖堆棧中。

我在正確的活動下將其添加到我的清單文件中。

android:launchMode="singleTop" 
2

可以存儲在一個字符串搜索請求可變或在shared Preferences當「轉到」按鈕是通過使用getQuery()點擊時搜索事件happends(setOnSearchClickListener),然後將它們寫回在either as the Query (setQuery) or as a hint (setQueryHint)

編輯

你怎麼能存儲查詢字符串,如果該活動是每一個搜索後重新創建(你可以閱讀這個回答以下問題基礎)?如果你的應用程序運行時有一些服務需要存儲,但那不是那麼優雅。最簡單的方法是使用SharedPreferences。這是一個persitant(key,value)存儲,您可以在整個應用程序中使用它來存儲和檢索值。

你開始與

SharedPreferences prefs = getSharedPreferences("mysharedprefenrences", 0); 

字符串a SharedPreference可以是你想要的任何東西。每當您使用相同的字符串在應用程序中創建SharedPreferences對象時,您將再次訪問這些值。

得到一個字符串,只需在搜索查詢,使用

String aString = prefs.getString("searchQuery", "") 

與第二個字符串是默認,如果查詢沒有被設定(在這種情況下,「」)。

當setOnSearchClickListener通過時,您可以使用編輯器存儲查詢。

Editor editor = prefs.edit(); 
editor.putString("searchQuery", queryString); 
editor.commit(); 

現在下一次創建活動,而不是默認的字符串,您的存儲的字符串將被找到。

+0

+1從我身邊! – Swayam

+0

HI Lukas,我在我的Activity中添加了'onQueryTextChange'和'onQueryTextSubmit'方法,並用於'SearchView.setOnSearchClickListener'來將偵聽器設置爲'this'。每次按下按鍵,每次提交文本時,我都可以獲取該事件,但似乎在創建搜索時,會創建一個新的活動實例,而且我無法再引用這些相同的變量。我應該在哪裏編寫'SearchView.getQuery()'方法?你能否提供一些例子。我已經完全失去了搜索的東西。謝謝。 –

+0

我已經添加了一個編輯來反映這個問題。 –