@@ -46,13 +46,16 @@ class SearchActivity : AppCompatActivity(), SearchRecyclerView.OnSearchResultCli
4646 private lateinit var searchTextWatcher: SearchTextWatcher
4747
4848 private var hasQuery: Boolean = false
49+ private lateinit var initialQuery: String
4950
5051 override fun onCreate (savedInstanceState : Bundle ? ) {
5152 super .onCreate(savedInstanceState)
5253 setContentView(R .layout.activity_search)
5354 enableLightNavigationBar(this )
5455 setupToolbar()
5556
57+ initialQuery = savedInstanceState?.getString(QUERY_KEY ) ? : " "
58+
5659 with (searchComponent(this )) {
5760 searchService = service()
5861 navigator = navigator()
@@ -74,7 +77,7 @@ class SearchActivity : AppCompatActivity(), SearchRecyclerView.OnSearchResultCli
7477
7578 val searchSubscription = querySubject.throttleLast(QUERY_DEBOUNCE_TIMEOUT , TimeUnit .MILLISECONDS )
7679 .doOnNext(::updateSearchActionIcon)
77- .startWith(getInitialQuery() )
80+ .startWith(initialQuery )
7881 .flatMap(searchService::find)
7982 .distinctUntilChanged()
8083 .subscribeOn(Schedulers .io())
@@ -93,11 +96,6 @@ class SearchActivity : AppCompatActivity(), SearchRecyclerView.OnSearchResultCli
9396 searchField.requestFocus()
9497 }
9598
96- private fun getInitialQuery (): String {
97- val text = searchField.text
98- return text?.toString() ? : EMPTY_QUERY
99- }
100-
10199 private fun updateSearchActionIcon (query : String ) {
102100 hasQuery = query.isNotEmpty()
103101 invalidateOptionsMenu()
@@ -122,9 +120,8 @@ class SearchActivity : AppCompatActivity(), SearchRecyclerView.OnSearchResultCli
122120 } else {
123121 emptyView.isInvisible = true
124122 searchRecyclerView.isVisible = true
125-
126- searchRecyclerView.updateWith(searchResult, this )
127123 }
124+ searchRecyclerView.updateWith(searchResult, this )
128125 }
129126
130127 private fun onSearchError () {
@@ -192,6 +189,11 @@ class SearchActivity : AppCompatActivity(), SearchRecyclerView.OnSearchResultCli
192189 }
193190 }
194191
192+ override fun onSaveInstanceState (outState : Bundle ? ) {
193+ outState?.putString(QUERY_KEY , searchField.text?.toString())
194+ super .onSaveInstanceState(outState)
195+ }
196+
195197 private fun onVoiceSearchClicked () {
196198 Intent (RecognizerIntent .ACTION_RECOGNIZE_SPEECH ).apply {
197199 putExtra(RecognizerIntent .EXTRA_MAX_RESULTS , 1 )
@@ -245,6 +247,6 @@ class SearchActivity : AppCompatActivity(), SearchRecyclerView.OnSearchResultCli
245247 private const val SPEECH_REQUEST_CODE = 100
246248 private const val QUERY_DEBOUNCE_TIMEOUT = 250L
247249 private const val MIN_QUERY_LENGTH = 2
248- private const val EMPTY_QUERY = " "
250+ private const val QUERY_KEY = " SearchActivity.query_key "
249251 }
250252}
0 commit comments