Geriye Dönük Uyumlu

Compose yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da arama işlevselliği eklemeyi öğrenin.

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 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 manifestinizde eski cihazları desteklemek istediğinizi ancak Android 3.0 veya sonraki sürümleri hedeflemek istediğinizi belirtin. Bu işlemi yaptığınızda uygulamanız Android 3.0 veya sonraki sürümlerde otomatik olarak işlem çubuğunu, daha 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 her seçtiğinde onSearchRequested() işlevini çağırın. Android 3.0 ve sonraki sürümlerdeki cihazlar işlem çubuğunda SearchView simgesini gösterdiğinden (ilk derste gösterildiği gibi), yalnızca 3.0'dan eski sürümlerde kullanıcı arama menüsü öğesini seçtiğinde 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

Çalışma zamanında, eski cihazlarda SearchView'nın desteklenmeyen bir şekilde kullanılmadığından emin olmak için cihaz sürümünü kontrol edin. Örnek kodumuzda bu işlem, 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;
}