SearchView
ve işlem çubuğu, yalnızca Android 3.0 ve sonraki sürümlerde kullanılabilir. Daha eski platformları desteklemek için arama iletişim kutusuna dönebilirsiniz. Arama iletişim kutusu, çağrıldığında uygulamanızın üzerinde yer alan ve sistem tarafından sağlanan bir kullanıcı arayüzüdür.
Minimum ve Hedef API düzeyleri belirleme
Arama iletişim kutusunu ayarlamak için öncelikle manifest dosyanızda eski cihazları desteklemek ancak Android 3.0 veya sonraki sürümleri hedeflemek istediğinizi beyan edin. Bunu yaptığınızda, uygulamanız Android 3.0 veya sonraki sürümlerde işlem çubuğunu otomatik olarak kullanır ve eski cihazlarda geleneksel menü sistemini kullanır:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> <application> ...
Eski Cihazlar İçin Arama İletişim Kutusu Sağlayın
Daha eski cihazlarda arama iletişim kutusunu çağırmak için bir kullanıcı, seçenekler menüsünden arama menüsü öğesini her seçtiğinde onSearchRequested()
numaralı telefonu arayın. Android 3.0 ve sonraki sürümler işlem çubuğunda SearchView
işaretini gösterdiğinden (ilk derste gösterildiği gibi), yalnızca 3.0'dan eski sürümler kullanıcı arama menüsü öğesini seçtiğinde onOptionsItemSelected()
yöntemini çağırı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
Çalışma zamanında, eski cihazlarda desteklenmeyen SearchView
kullanımının bulunmadığından emin olmak için 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; }