ব্যাকওয়ার্ড কম্প্যাটিবল থাকা

Compose-এর মাধ্যমে চেষ্টা করুন
Jetpack Compose হল Android-এর জন্য সাজেস্ট করা UI টুলকিট। Compose-এ কীভাবে সার্চ ফাংশনালিটি যোগ করতে হয় তা জানুন।

SearchView এবং অ্যাকশন বার শুধুমাত্র Android 3.0 এবং তার পরবর্তী ভার্সনে উপলভ্য। পুরনো প্ল্যাটফর্মের জন্য, আপনি সার্চ ডায়ালগ ব্যবহার করতে পারেন। সার্চ ডায়ালগ হল সিস্টেমের দেওয়া UI যা চালু করা হলে আপনার অ্যাপ্লিকেশনের উপরে ওভারলে হিসেবে দেখা যায়।

ন্যূনতম ও টার্গেট API লেভেল সেট করা

সার্চ ডায়ালগ সেট-আপ করতে, প্রথমে আপনার ম্যানিফেস্টে ঘোষণা করুন যে আপনি পুরনো ডিভাইস সাপোর্ট করতে চান, কিন্তু 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
    }
}

জাভা

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

জাভা

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