SearchView
ve işlem çubuğu yalnızca Android 3.0 ve sonraki sürümlerde kullanılabilir. Eski platformları desteklemek için arama iletişim kutusuna geri dönebilirsiniz. Arama iletişim kutusu, çağrıldığında uygulamanızın üzerine yerleştirilen, sistem tarafından sağlanan bir kullanıcı arayüzüdür.
Minimum ve hedef API düzeylerini ayarlama
Arama iletişim kutusunu ayarlamak için önce manifest dosyanızda eski cihazları desteklemek ancak Android 3.0 veya sonraki sürümleri hedeflemek istediğinizi belirtin. Bunu yaptığınızda uygulamanız, Android 3.0 veya sonraki sürümlerde otomatik olarak işlem çubuğunu, eski cihazlarda ise geleneksel menü sistemini kullanır:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> <application> ...
Eski Cihazlar İçin Arama İletişim Kutusunu Sağlama
Eski cihazlarda arama iletişim kutusunu çağırmak için kullanıcı seçenekler menüsünden arama menü öğesini seçtiğinde onSearchRequested()
işlevini çağırın. Android 3.0 ve sonraki sürümleri çalıştıran cihazlarda işlem çubuğunda SearchView
gösterildiği için (ilk derste gösterildiği gibi) kullanıcı arama menüsü öğesini seçtiğinde yalnızca 3.0'dan eski sürümler onOptionsItemSelected()
çağrılır.
Kotlin
override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.search -> { onSearchRequested() true } else -> false } }
Java
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.search: onSearchRequested(); return true; default: return false; } }
Çalışma zamanında Android derleme sürümünü kontrol etme
Eski cihazlarda SearchView
'ın desteklenmeyen bir şekilde kullanılmadığından emin olmak için çalışma zamanında cihaz sürümünü kontrol edin. Örnek kodumuzda bu, onCreateOptionsMenu()
yönteminde gerçekleşir:
Kotlin
override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.options_menu, menu) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager (menu.findItem(R.id.search).actionView as SearchView).apply { setSearchableInfo(searchManager.getSearchableInfo(componentName)) setIconifiedByDefault(false) } } return true }
Java
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options_menu, menu); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView(); searchView.setSearchableInfo( searchManager.getSearchableInfo(getComponentName())); searchView.setIconifiedByDefault(false); } return true; }