SearchView এবং অ্যাকশন বার শুধুমাত্র অ্যান্ড্রয়েড ৩.০ এবং তার পরবর্তী সংস্করণগুলোতে উপলব্ধ। পুরোনো প্ল্যাটফর্মগুলোকে সমর্থন করার জন্য, আপনি সার্চ ডায়ালগ ব্যবহার করতে পারেন। সার্চ ডায়ালগ হলো একটি সিস্টেম-প্রদত্ত ইউআই, যা চালু করা হলে আপনার অ্যাপ্লিকেশনের উপরে একটি ওভারলে হিসেবে প্রদর্শিত হয়।
সর্বনিম্ন এবং লক্ষ্যমাত্রা এপিআই স্তর নির্ধারণ করুন
সার্চ ডায়ালগ সেটআপ করার জন্য, প্রথমে আপনার ম্যানিফেস্টে ঘোষণা করুন যে আপনি পুরোনো ডিভাইসগুলো সাপোর্ট করতে চান, কিন্তু অ্যান্ড্রয়েড ৩.০ বা তার পরবর্তী সংস্করণকে টার্গেট করতে চান। এটি করলে, আপনার অ্যাপ্লিকেশনটি অ্যান্ড্রয়েড ৩.০ বা তার পরবর্তী সংস্করণে স্বয়ংক্রিয়ভাবে অ্যাকশন বার এবং পুরোনো ডিভাইসগুলোতে প্রচলিত মেনু সিস্টেম ব্যবহার করবে।
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" /> <application> ...
পুরোনো ডিভাইসগুলির জন্য সার্চ ডায়ালগ প্রদান করুন
পুরোনো ডিভাইসগুলিতে সার্চ ডায়ালগ চালু করতে, যখনই কোনো ব্যবহারকারী অপশনস মেনু থেকে সার্চ মেনু আইটেমটি নির্বাচন করেন, তখন onSearchRequested() কল করুন। যেহেতু অ্যান্ড্রয়েড ৩.০ এবং তার পরবর্তী সংস্করণগুলির ডিভাইসগুলি অ্যাকশন বারে SearchView দেখায় (যেমনটি প্রথম পাঠে দেখানো হয়েছে), তাই শুধুমাত্র ৩.০-এর চেয়ে পুরোনো সংস্করণগুলিতেই ব্যবহারকারী সার্চ মেনু আইটেমটি নির্বাচন করলে onOptionsItemSelected() কল করা হয়।
কোটলিন
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; } }
রানটাইমে অ্যান্ড্রয়েড বিল্ড সংস্করণ পরীক্ষা করুন
রানটাইমে ডিভাইসের সংস্করণ যাচাই করে নিশ্চিত করুন যে পুরোনো ডিভাইসগুলিতে SearchView এর কোনো অসমর্থিত ব্যবহার যেন না ঘটে। আমাদের উদাহরণ কোডে, এটি onCreateOptionsMenu() মেথডে ঘটে থাকে:
কোটলিন
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; }
