पुराने सिस्टम के साथ काम करता है

SearchView और कार्रवाई बार सिर्फ़ Android 3.0 और बाद में. पुराने प्लैटफ़ॉर्म पर काम करने के लिए, खोज वाले डायलॉग बॉक्स पर वापस जाया जा सकता है. खोज डायलॉग सिस्टम से मिलने वाला यूज़र इंटरफ़ेस (यूआई) है, जो लागू किए जाने पर आपके ऐप्लिकेशन के सबसे ऊपर ओवरले करता है.

कम से कम और टारगेट एपीआई लेवल सेट करना

खोज डायलॉग सेट अप करने के लिए, सबसे पहले अपने मेनिफ़ेस्ट में यह एलान करें कि आपको पुराने वर्शन के साथ काम करना है लेकिन Android 3.0 या उसके बाद के वर्शन को लक्षित करना चाहते हैं. ऐसा करने पर, आपका ऐप्लिकेशन Android 3.0 या उसके बाद के वर्शन पर, कार्रवाई बार का अपने-आप इस्तेमाल करता है. साथ ही, Android 3.0 या इसके बाद के वर्शन पर पुराने डिवाइस:

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />

<application>
...

पुराने डिवाइसों के लिए खोज डायलॉग बॉक्स दें

पुराने डिवाइसों पर खोज डायलॉग शुरू करने के लिए, जब भी कोई उपयोगकर्ता खोज को चुने, तब onSearchRequested() को कॉल करें विकल्प मेन्यू से मेन्यू आइटम. क्योंकि Android 3.0 और उसके बाद के डिवाइस कार्रवाई बार में SearchView (जैसा कि पहले लेसन में बताया गया है), सिर्फ़ वर्शन 3.0 से पहले का है, तो onOptionsItemSelected() को तब कॉल करें जब उपयोगकर्ता, खोज मेन्यू आइटम को चुनता है.

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

रनटाइम पर Android बिल्ड वर्शन देखें

रनटाइम के दौरान, डिवाइस के वर्शन की जांच करें और यह पक्का करें कि पुराने डिवाइसों पर SearchView का इस्तेमाल न किया जा सके. हमारे उदाहरण कोड में, ऐसा होता है onCreateOptionsMenu() तरीका:

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