SearchView
ve işlem çubuğu, yalnızca Android 3.0 ve
daha sonra. Eski platformları desteklemek için arama iletişim kutusuna dönebilirsiniz. Arama iletişim kutusu
çağrıldığında uygulamanızın üzerinde yer paylaşımlı olarak sistem tarafından sağlanan kullanıcı arayüzü.
Minimum ve Hedef API düzeylerini ayarlayın
Arama iletişim kutusunu ayarlamak için önce manifestinizde eski dosyaları desteklemek istediğinizi belirtin Cihazlarınız varsa ancak Android 3.0 veya sonraki sürümleri hedeflemek istiyorsanız. Bunu yaptığınızda uygulamanız Android 3.0 veya sonraki sürümlerde otomatik olarak işlem çubuğunu kullanır ve daha eski cihazlar:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> <application> ...
Eski Cihazlar İçin Arama İletişim Kutusunu Sağlayın
Eski cihazlarda arama iletişim kutusunu çağırmak için kullanıcı aramayı her seçtiğinde onSearchRequested()
komutunu çağırın
menü öğesini seçin. Çünkü Android 3.0 ve sonraki sürümlerin yüklü olduğu cihazlar
İşlem çubuğunda SearchView
(ilk derste gösterildiği gibi), yalnızca sürümler
3.0'dan daha eski olan onOptionsItemSelected()
kullanıcı arama menüsü öğesini seçer.
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 bir SearchView
kullanımının bulunmadığından emin olmak için cihaz sürümünü kontrol edin. Örnek kodumuzda bu durum
onCreateOptionsMenu()
yöntemi:
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; }