Geriye Dönük Uyumlu

Oluşturma yöntemini deneyin
Android için önerilen kullanıcı arayüzü araç seti Jetpack Compose'dur. Oluştur'a nasıl arama işlevi ekleyeceğinizi öğrenin.

SearchView ve işlem çubuğu yalnızca Android 3.0 ve sonraki sürümlerde kullanılabilir. 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 manifest dosyanızda eski cihazları desteklemek ancak Android 3.0 veya sonraki sürümleri hedeflemek istediğinizi belirtin. Bunu yaptığınızda uygulamanız, Android 3.0 veya sonraki sürümlerde otomatik olarak işlem çubuğunu, 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 seçtiğinde onSearchRequested() işlevini çağırın. Android 3.0 ve sonraki sürümleri çalıştıran cihazlarda işlem çubuğunda SearchView gösterildiği için (ilk derste gösterildiği gibi) kullanıcı arama menüsü öğesini seçtiğinde yalnızca 3.0'dan eski sürümler 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

Eski cihazlarda SearchView'ın desteklenmeyen bir şekilde kullanılmadığından emin olmak için çalışma zamanında 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;
}