Geriye Dönük Uyumlu

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;
}