Geriye Dönük Uyumlu

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