1. Mobil qurilmalar uchun dasturlar Ishlab chiqish muhiti


Mavzu: Qidiruvni tashkil etish. Qidiruv interfeysi



Download 27,79 Mb.
bet14/18
Sana24.09.2022
Hajmi27,79 Mb.
#850101
1   ...   10   11   12   13   14   15   16   17   18
Bog'liq
Amaliyot mobil qurulmalarni dasturlash

Mavzu: Qidiruvni tashkil etish. Qidiruv interfeysi
Reja:
1. Qidiruvni tashkil etish
2.Qidiruv interfeysini yaratish
Ilovangizga qidiruv funksiyasini qoʻshishga tayyor boʻlsangiz, Android foydalanuvchi interfeysini faoliyat oynasining yuqori qismida paydo boʻladigan qidiruv dialogi yoki tartibingizga kiritishingiz mumkin boʻlgan qidiruv vidjeti yordamida amalga oshirishga yordam beradi. Qidiruv oynasi ham, vidjet ham foydalanuvchining qidiruv so‘rovini ilovangizdagi muayyan faoliyatga yetkazishi mumkin. Shunday qilib, foydalanuvchi qidiruv dialogi yoki vidjeti mavjud bo'lgan har qanday faoliyatdan qidiruvni boshlashi mumkin va tizim qidiruvni amalga oshirish va natijalarni taqdim etish uchun tegishli faoliyatni boshlaydi.
Qidiruv dialogi va vidjeti uchun mavjud bo‘lgan boshqa funksiyalarga quyidagilar kiradi:
Ovozli qidiruv
Oxirgi so'rovlar asosida takliflarni qidiring
Ilova maʼlumotlaringizdan haqiqiy natijalarga mos keladigan takliflarni qidiring
Ushbu qoʻllanma Android tizimi tomonidan qidiruv soʻrovlarini yetkazib berish uchun qidiruv interfeysi bilan taʼminlash uchun ilovangizni qanday sozlashni koʻrsatib beradi.
Tegishli manbalar:
Materiallar dizayni piktogrammalari
Asoslar

1-rasm. Ilovaning qidiruv dialog oynasining skrinshoti.


Ishni boshlashdan oldin, qidiruv dialog oynasi yoki qidiruv vidjeti yordamida qidiruv interfeysingizni amalga oshirishni hal qilishingiz kerak. Ikkalasi ham bir xil qidiruv xususiyatlarini ta'minlaydi, ammo biroz boshqacha yo'llar bilan:
Qidiruv muloqot Android tizimi tomonidan nazorat yotipti bir UI qismi hisoblanadi. Foydalanuvchi tomonidan faollashtirilganda, 1-rasmda ko'rsatilganidek, qidiruv dialogi faoliyatning yuqori qismida paydo bo'ladi.
Android tizimi qidiruv dialogidagi barcha hodisalarni boshqaradi. Foydalanuvchi so'rov yuborganida, tizim so'rovni qidiruvlarni boshqarish uchun siz belgilagan faoliyatga etkazib beradi. Muloqot oynasi foydalanuvchi yozish paytida qidiruv takliflarini ham berishi mumkin.
Qidiruv vidjet bir misol bo'lib, SearchViewsiz tuzumining ichida har bir joyda mumkin, deb. Odatiy bo'lib, qidiruv vidjeti standart EditTextvidjet kabi ishlaydi va hech narsa qilmaydi, lekin siz uni Android tizimi barcha kiritish hodisalarini boshqaradigan, tegishli faoliyat bo'yicha so'rovlarni etkazib beradigan va qidiruv takliflarini taqdim etadigan tarzda sozlashingiz mumkin (xuddi qidiruv dialog oynasi kabi). ).
Eslatma: Agar xohlasangiz, har xil qayta qo'ng'iroq usullari va tinglovchilardan foydalangan holda qidiruv vidjetiga foydalanuvchi kiritgan barcha ma'lumotlarni o'zingiz boshqarishingiz mumkin. Biroq, ushbu hujjat qidiruv vidjetini yordamchi qidiruvni amalga oshirish uchun tizim bilan qanday integratsiyalashga qaratilgan. Agar siz barcha foydalanuvchi ma'lumotlarini o'zingiz hal qilmoqchi bo'lsangiz, mos yozuvlar hujjatlarini SearchViewva uning o'rnatilgan interfeyslarini o'qing.
Foydalanuvchi qidiruv dialog oynasidan yoki qidiruv vidjetidan qidiruvni amalga oshirganda, tizim Intentfoydalanuvchi so'rovini yaratadi va unda saqlaydi. Keyin tizim siz qidiruvlarni boshqarish uchun e'lon qilgan faoliyatni ("qidiriladigan faoliyat") boshlaydi va unga maqsadni beradi. Ilovangizni ushbu turdagi yordamchi qidiruv uchun sozlash uchun sizga quyidagilar kerak bo'ladi:
Qidiriladigan konfiguratsiya
Qidiruv oynasi yoki vidjet uchun ba'zi sozlamalarni sozlaydigan XML fayli. U ovozli qidiruv, qidiruv taklifi va qidiruv maydoni uchun maslahat matni kabi xususiyatlar sozlamalarini o'z ichiga oladi.
Qidiriladigan faoliyat
U Activityqidiruv so'rovini qabul qiladi, ma'lumotlaringizni qidiradi va qidiruv natijalarini ko'rsatadi.
Quyidagilardan biri tomonidan taqdim etilgan qidiruv interfeysi:
Qidiruv dialogi
Odatiy bo'lib, qidiruv dialog oynasi yashirin, lekin siz qo'ng'iroq qilganingizda onSearchRequested()(foydalanuvchi Qidiruv tugmasini bosganida) ekranning yuqori qismida paydo bo'ladi .
Yoki SearchViewvidjet
Qidiruv vidjetidan foydalanish qidiruv maydonini faoliyatingizning istalgan joyiga qo'yish imkonini beradi. Uni faoliyat tartibiga qo'yish o'rniga, odatda SearchViewilovalar panelida harakat ko'rinishi sifatida foydalanishingiz kerak .
Ushbu hujjatning qolgan qismida qidirish mumkin bo'lgan konfiguratsiyani, qidirish mumkin bo'lgan faoliyatni qanday yaratish va qidiruv dialogi yoki qidiruv vidjeti yordamida qidiruv interfeysini amalga oshirish ko'rsatilgan.
Qidiriladigan konfiguratsiyani yaratish
Sizga kerak bo'lgan birinchi narsa - qidiruv konfiguratsiyasi deb nomlangan XML fayli. U qidiruv dialogi yoki vidjetining ma'lum UI jihatlarini sozlaydi va takliflar va ovozli qidiruv kabi xususiyatlar qanday ishlashini belgilaydi. Ushbu fayl an'anaviy tarzda nomlanadi searchable.xmlva res/xml/loyiha katalogida saqlanishi kerak .
Eslatma: Tizim ushbu fayldan SearchableInfoob'ektni yaratish uchun foydalanadi , lekin siz ushbu ob'ektni ish vaqtida o'zingiz yarata olmaysiz - XML-da qidirish mumkin bo'lgan konfiguratsiyani e'lon qilishingiz kerak.
Qidiriladigan konfiguratsiya fayli elementni ildiz tugun sifatida o'z ichiga olishi va bir yoki bir nechta atributlarni ko'rsatishi kerak. Masalan:

android:label="@string/app_label"
android:hint="@string/search_hint" >

android:labelXususiyati faqat zarur sifatdir. U dastur nomi bo'lishi kerak bo'lgan qator resursiga ishora qiladi. Tez qidiruv qutisi uchun qidiruv takliflarini yoqmaguningizcha, bu yorliq aslida foydalanuvchiga ko‘rinmaydi. O'sha paytda ushbu belgi tizim sozlamalaridagi Qidiriladigan elementlar ro'yxatida ko'rinadi.


Bu talab qilinmasa ham, android:hint foydalanuvchilar soʻrovni kiritishdan oldin qidiruv maydoniga maslahat satrini taqdim etuvchi atributni doimo kiritishingizni tavsiya qilamiz . Maslahat muhim, chunki u foydalanuvchilarga nima qidirishi mumkinligi haqida muhim maslahatlar beradi.
Maslahat: Boshqa Android ilovalari oʻrtasida izchil boʻlishi uchun qatorni android:hint“ qidiruvi” sifatida formatlashingiz kerak . Masalan, "Qo'shiqlar va ijrochilarni qidirish" yoki "YouTube'da qidiruv".
Element bir necha boshqa sifatlarini qabul qiladi. Biroq, qidiruv takliflari va ovozli qidiruv kabi xususiyatlarni qo'shmaguningizcha, sizga ko'pgina atributlar kerak emas . Qidiriladigan konfiguratsiya fayli haqida batafsil ma'lumot olish uchun Qidiriladigan konfiguratsiya ma'lumotnoma hujjatiga qarang .
Qidiriladigan faoliyatni yaratish
Qidiriladigan faoliyat - bu Activityso'rovlar qatori asosida qidiruvlarni amalga oshiradigan va qidiruv natijalarini taqdim etadigan ilovangizdagi.
Foydalanuvchi qidirish dialog oynasi yoki vidjet, bir qo'ng'iroq amalga oshiradi bo'lsa, tizim sizning qo'ng'iroq qilish faoliyatini boshlaydi va bir yilda uni qidiruv so'rovini qutqarsa Intentbilan ACTION_SEARCHharakat. Qidirish mumkin boʻlgan faoliyatingiz maqsadning QUERYqoʻshimcha qismidan soʻrovni oladi , soʻngra maʼlumotlaringizni qidiradi va natijalarni taqdim etadi.
Ilovangizdagi boshqa har qanday faoliyatga qidiruv dialogi yoki vidjetini qo‘shishingiz mumkinligi sababli, tizim qidiruv so‘rovini to‘g‘ri yetkazib berishi uchun qaysi faoliyat sizning qidiruvingiz ekanligini bilishi kerak. Shunday qilib, avval Android manifest faylida qidirish mumkin bo'lgan faoliyatingizni e'lon qilishingiz kerak.
Qidiriladigan faoliyatni e'lon qilish
Agar sizda hali yo'q bo'lsa, Activityqidiruvlarni amalga oshiradigan va natijalarni taqdim etadigan dastur yarating . Siz hali qidiruv funksiyasini amalga oshirishingiz shart emas — shunchaki manifestda eʼlon qilishingiz mumkin boʻlgan faoliyatni yarating. Manifest  elementi ichida:
Elementda ACTION_SEARCHniyatni qabul qilish uchun faoliyatni e'lon qiling  .
Elementda foydalanish uchun qidiriladigan konfiguratsiyani belgilang  .
Masalan:





android:resource="@xml/searchable"/>

...



Element o'z ichiga olishi kerak android:namebo'lgan qiymati bilan bir xususiyati "android.app.searchable"va android:resourceqo'ng'iroq qilish mumkin konfiguratsiya fayli uchun mos yozuvlar bilan atributi (bu, masalan, u nazarda tutadi res/xml/searchable.xmlfayl).
Eslatma: Agar kerak emas bo'lgan DEFAULT(odatda ko'rib qiymati tizimi qutqarsa, chunki, elementlar) ACTION_SEARCHuning tarkibiy qismi nomini foydalanib, siz bilan qo'ng'iroq faoliyati maqsad ochiq.
Qidiruvni amalga oshirish
Manifestda qidirish mumkin bo'lgan faoliyatingizni e'lon qilganingizdan so'ng, qidiruv faoliyatingizda qidiruvni amalga oshirish uch bosqichni o'z ichiga oladi:
So'rovni qabul qilish
Maʼlumotlaringiz qidirilmoqda
Natijalarni taqdim etish
An'anaga ko'ra, qidiruv natijalari a formatida ko'rsatilishi kerak ListView, shuning uchun qidiruv faoliyatingiz kengaytirilishini xohlashingiz mumkin ListActivity. U bitta bilan standart tartibni o'z ichiga oladi ListViewva bilan ishlash uchun bir nechta qulay usullarni taqdim etadi ListView.
So'rovni qabul qilish
Foydalanuvchi qidiruv dialogi yoki vidjetidan qidiruvni amalga oshirganda, tizim sizning qidiruv faoliyatingizni boshlaydi va unga ACTION_SEARCHniyat yuboradi . Ushbu maqsad qidiruv so'rovini QUERYqo'shimcha qatorda olib boradi . Faoliyat boshlanganda ushbu maqsadni tekshirishingiz va qatorni chiqarib olishingiz kerak. Masalan, qidiruvingiz boshlanganda qidiruv soʻrovini qanday olishingiz mumkin:
KotlinJava
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.search)

// Verify the action and get the query


if (Intent.ACTION_SEARCH == intent.action) {
intent.getStringExtra(SearchManager.QUERY)?.also { query ->
doMySearch(query)
}
}
}


QUERYTor har doim o'z ichiga oladi ACTION_SEARCHmaqsad. Ushbu misolda so'rov olinadi va doMySearch()haqiqiy qidiruv operatsiyasi bajariladigan mahalliy usulga o'tkaziladi.
Maʼlumotlaringiz qidirilmoqda
Ma'lumotlaringizni saqlash va qidirish jarayoni sizning ilovangizga xosdir. Maʼlumotlaringizni koʻp usullarda saqlashingiz va qidirishingiz mumkin, ammo bu qoʻllanma maʼlumotlaringizni qanday saqlash va ularni qidirishni koʻrsatmaydi. Ma'lumotlaringizni saqlash va qidirish sizning ehtiyojlaringiz va ma'lumotlar formatingiz nuqtai nazaridan diqqat bilan ko'rib chiqishingiz kerak bo'lgan narsadir. Biroq, siz qo'llashingiz mumkin bo'lgan ba'zi maslahatlar:
Agar sizning ma'lumotlaringiz qurilmadagi SQLite ma'lumotlar bazasida saqlangan bo'lsa, to'liq matnli qidiruvni amalga oshirish ( LIKEso'rov o'rniga FTS3 yordamida ) matn ma'lumotlari bo'ylab yanada ishonchli qidiruvni ta'minlaydi va natijalarni sezilarli darajada tezroq ishlab chiqarishi mumkin. FTS3 haqida ma'lumot olish uchun sqlite.org va SQLiteDatabaseAndroid'dagi SQLite haqida ma'lumot olish uchun sinfga qarang .
Agar sizning ma'lumotlaringiz onlayn saqlangan bo'lsa, foydalanuvchining ma'lumotlar ulanishi tufayli qidiruv samaradorligi to'xtatilishi mumkin. Qidiruvingiz qaytib kelguniga qadar aylanayotgan g'ildirakni ko'rsatishni xohlashingiz mumkin. Qarang android.nettarmoq API mos yozuvlar va bir harakat bilan muloqot yaratish bir harakat g'ildirakni ko'rsatishi haqida ma'lumot olish uchun.
Natijalarni taqdim etish
Maʼlumotlaringiz qayerda va qanday qidirayotganingizdan qatʼi nazar, qidiruv natijalarini qidiruv faoliyatingizga qaytarishingizni tavsiya qilamiz Adapter. Shunday qilib, siz barcha qidiruv natijalarini osongina ko'rsatishingiz mumkin ListView. Sizning ma'lumotlar bir SQLite ma'lumotlar bazasi so'rov kelsa, siz uchun natijalarni qo'llash mumkin ListView bo'lgan foydalanish CursorAdapter. Agar ma'lumotlaringiz boshqa turdagi formatda bo'lsa, siz kengaytmani yaratishingiz mumkin BaseAdapter.
Ma'lumotlar Adapterto'plamidagi har bir elementni ob'ektga bog'laydi View. Qachon Adapter bir qo'llaniladi ListView, ma'lumotlar har bir parcha ro'yxatiga individual nuqtai sifatida qo'shiladi. Adaptershunchaki interfeys, shuning CursorAdapteruchun (a dan ma'lumotlarni ulash uchun Cursor) kabi ilovalar kerak. Mavjud ilovalarning hech biri ma'lumotlaringiz uchun ishlamasa, siz o'zingiznikidan amalga oshirishingiz mumkin BaseAdapter.
Qidiruv faolligingizni kengaytirishni xohlashingiz mumkin ListActivity. Keyin qo'ng'iroq qilishingiz mumkin setListAdapter(), uni Adapterma'lumotlaringizga bog'langan holda uzating. Bu barcha qidiruv natijalarini faoliyatga kiritadi ListView.
Natijalaringizni roʻyxatda koʻrsatish boʻyicha qoʻshimcha yordam olish uchun ListActivity hujjatlarga qarang .
Qidiruv dialog oynasidan foydalanish
Qidiruv dialog oynasi ekranning yuqori qismida suzuvchi qidiruv oynasini, chap tomonda ilova belgisini taqdim etadi. Qidiruv dialog oynasi foydalanuvchi yozganda qidiruv takliflarini taqdim etishi mumkin va foydalanuvchi qidiruvni amalga oshirganda, tizim qidiruv so'rovini qidiruvni amalga oshiradigan qidiriladigan faoliyatga yuboradi. Biroq, agar siz Android 3.0 operatsion tizimida ishlaydigan qurilmalar uchun ilovangizni ishlab chiqayotgan bo'lsangiz, uning o'rniga qidiruv vidjetidan foydalanish haqida o'ylashingiz kerak (Qidiruv vidjetidan foydalanish bo'limiga qarang ).
Qidiruv dialog oynasi har doim foydalanuvchi uni faollashtirmaguncha sukut bo'yicha yashirin bo'ladi. Ilovangiz qo'ng'iroq qilish orqali qidiruv dialogini faollashtirishi mumkin onSearchRequested(). Biroq, bu usul faoliyat uchun qidiruv dialogini yoqmaguningizcha ishlamaydi.
Qidiruv oynasini yoqish uchun siz tizimga qidiruvni amalga oshirish uchun qidiruv dialog oynasidan qaysi qidiruv so'rovlarini olishi kerakligini ko'rsatishingiz kerak. Misol uchun, qidirish mumkin bo'lgan faoliyatni yaratish haqidagi oldingi bo'limda nomli qidiruv faoliyati SearchableActivityyaratilgan. Agar siz OtherActivityqidiruv dialog oynasini ko'rsatish va qidiruvlarni etkazib berish uchun nomli alohida faoliyatni xohlasangiz SearchableActivity, manifestda SearchableActivityqidiruv dialog oynasida foydalanish uchun qidiruv mumkin bo'lgan faoliyatni e'lon qilishingiz kerak OtherActivity.
Faoliyatning qidiruv dialog oynasi uchun qidiriladigan faoliyatni e'lon qilish uchun  tegishli faoliyat elementiga element qo'shing  Element o'z ichiga olishi kerak android:valueqo'ng'iroq qilish faoliyatini sinf nomini va bildiradi atribut android:namebir qiymati bilan bir xususiyati "android.app.default_searchable".
Masalan, qidiruv oynasi orqali amalga oshirilgan qidiruvlarni amalga oshirish uchun foydalaniladigan qidiruv uchun ham, ham SearchableActivityboshqa faoliyat uchun deklaratsiya :OtherActivitySearchableActivity






android:resource="@xml/searchable"/>

in the SearchableActivity -->




android:value=".SearchableActivity" />

...

OtherActivityEndi  qidiruvlar uchun qaysi qidiruv faoliyatdan foydalanishni e'lon qilish elementini o'z ichiga olganligi sababli, faoliyat qidiruv dialogini yoqdi. Foydalanuvchi ushbu faoliyatda bo'lganida, onSearchRequested()usul qidiruv dialogini faollashtiradi. Foydalanuvchi qidiruvni amalga oshirganda, tizim ishga tushadi SearchableActivityva unga ACTION_SEARCHmaqsadni beradi.


Eslatma: Qidiriladigan faoliyatning o'zi sukut bo'yicha qidiruv dialogini ta'minlaydi, shuning uchun siz ushbu deklaratsiyani ga qo'shishingiz shart emas SearchableActivity.
Agar ilovangizdagi har bir faoliyat qidiruv oynasini taqdim etishini istasangiz, har bir element oʻrniga yuqoridagi  elementni elementning farzandi sifatida kiriting . Shunday qilib, har bir faoliyat qiymatni meros qilib oladi, qidiruv dialogini taqdim etadi va qidiruvlarni bir xil qidiruv faoliyatiga etkazib beradi. (Agar sizda bir nechta qidirish mumkin bo'lgan faoliyat mavjud bo'lsa, alohida harakatlar ichiga boshqa deklaratsiya qo'yish orqali standart qidiruv faoliyatini bekor qilishingiz mumkin .)
Faoliyatingiz uchun qidiruv oynasi yoqilgan bo'lsa, ilovangiz qidiruvlarni amalga oshirishga tayyor.
Qidiruv dialogini chaqirish
Ba'zi qurilmalarda maxsus Qidiruv tugmasi mavjud bo'lsa-da, tugmaning harakati qurilmalarda farq qilishi mumkin va ko'p qurilmalarda Qidiruv tugmasi umuman ta'minlanmaydi. Shunday qilib, qidiruv dialog oynasidan foydalanganda foydalanuvchi interfeysida qidiruv tugmachasini taqdim etishingiz kerak, u qo'ng'iroq qilish orqali qidiruv oynasini faollashtiradi onSearchRequested().
Masalan, Tanlovlar menyusiga yoki qo'ng'iroq qiladigan UI tartibiga Qidiruv tugmasini qo'shishingiz kerak onSearchRequested(). Android tizimi va boshqa ilovalarga mos kelishi uchun tugmani Action Bar Icon Pack dagi Android Qidiruv belgisi bilan belgilashingiz kerak .
Eslatma: Agar ilovangiz ilovalar panelidan foydalansa, qidiruv interfeysi uchun qidiruv dialog oynasidan foydalanmasligingiz kerak. Buning o'rniga, qidiruv vidjetidan ilovalar panelidagi yig'iladigan ko'rinish sifatida foydalaning .
Shuningdek, foydalanuvchi klaviaturada yozishni boshlaganda qidiruv oynasini faollashtiradigan “qidirish uchun terish” funksiyasini ham yoqishingiz mumkin — tugmalar bosish qidiruv oynasiga kiritiladi. Faoliyatingiz usuli davomida setDefaultKeyMode( DEFAULT_KEYS_SEARCH_LOCAL) ga qo'ng'iroq qilish orqali faoliyatingizda qidiruv turini yoqishingiz mumkin onCreate().
Qidiruv oynasining faoliyatingizning hayot aylanishiga ta'siri
Qidiruv dialog oynasi Dialogekranning yuqori qismida suzuvchi oynadir. Bu faoliyat stekida hech qanday o'zgarishga olib kelmaydi, shuning uchun qidiruv dialog oynasi paydo bo'lganda, hayot aylanish usullari (masalan, onPause()) chaqirilmaydi. Sizning faoliyatingiz kirish fokusini yo'qotadi, chunki kirish fokusi qidiruv dialogiga beriladi.
Qidiruv dialog oynasi faollashtirilganda sizni xabardor qilishni istasangiz, onSearchRequested()usulni bekor qiling . Tizim ushbu usulni chaqirganda, bu sizning faoliyatingiz qidiruv dialogiga kirish e'tiborini yo'qotganligidan dalolat beradi, shuning uchun siz hodisaga mos keladigan har qanday ishni bajarishingiz mumkin (masalan, o'yinni to'xtatib turish). Agar ekan, qidiruv kontekst ma'lumot o'tib (quyida muhokama), siz super sinf bajarilishini atab usuli nihoyasiga kerak. Masalan:
KotlinJava
override fun onSearchRequested(): Boolean {
pauseSomeStuff()
return super.onSearchRequested()
}

Agar foydalanuvchi " Orqaga" tugmasini bosish orqali qidiruvni bekor qilsa, qidiruv dialogi yopiladi va faoliyat kirish fokusini tiklaydi. Qidiruv oynasi setOnDismissListener() va/yoki bilan yopilganda xabardor bo'lish uchun ro'yxatdan o'tishingiz mumkin setOnCancelListener(). Siz faqat ro'yxatdan o'tishingiz kerak OnDismissListener, chunki u har safar qidiruv oynasi yopilganda chaqiriladi. OnCancelListenerA izlash ijro paytida foydalanuvchining aniq Qidiruv muloqot tugadiName bo'lgan voqealarga faqat bog'liq, shuning uchun u (bu holda, qidiruv muloqot tabiiy yo'qoladi), deb bo'lmaydi.


Agar joriy faoliyat qidirish mumkin bo'lmagan faoliyat bo'lmasa, foydalanuvchi qidiruvni amalga oshirgandan so'ng, normal faoliyatning hayotiy tsikli hodisalari ishga tushiriladi (joriy faoliyat qabul qilinadi onPause()va hokazo, Faoliyat hujjatida tasvirlanganidek ). Agar joriy faoliyat qidiriladigan faoliyat bo'lsa, ikkita narsadan biri sodir bo'ladi:
Odatiy bo'lib, qidirish mumkin bo'lgan faoliyat ACTION_SEARCHqo'ng'iroq bilan maqsadni oladi va faoliyatning onCreate()yangi namunasi faoliyat to'plamining yuqori qismiga chiqariladi. Faoliyatlar to'plamida qidiruvingiz mumkin bo'lgan faoliyatingizning ikkita nusxasi mavjud (shuning uchun " Orqaga" tugmasini bosish qidiruvdan chiqish o'rniga qidiruv qilinadigan harakatning oldingi nusxasiga qaytadi).
Agar belgilangan bo'lsa android:launchModeuchun "singleTop", keyin qo'ng'iroq qilish faoliyati qabul ACTION_SEARCHqilish Qo'ng'iroq bilan maqsad onNewIntent(Intent)yangi o'tib, ACTION_SEARCHbu erda maqsad. Misol uchun, bu ishni qanday hal qilishingiz mumkin, bunda qidiruvni boshlash rejimi "singleTop":
KotlinJava
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.search)
handleIntent(intent)
}

override fun onNewIntent(intent: Intent) {


setIntent(intent)
handleIntent(intent)
}

private fun handleIntent(intent: Intent) {


if (Intent.ACTION_SEARCH == intent.action) {
intent.getStringExtra(SearchManager.QUERY)?.also { query ->
doMySearch(query)
}
}
}

Haqida bo'limda hududda misol kodi bilan solishtirganda bir qo'ng'iroq qilib , qidiruv niyat band barcha kodi hozir handleIntent()shunday ikkala deb, usuli onCreate()va onNewIntent()uni amalga mumkin.


Tizim ga qo'ng'iroq qilganda, onNewIntent(Intent)faoliyat qayta boshlanmagan, shuning uchun getIntent()usul bilan qabul qilingan niyatni qaytaradi onCreate(). Shuning uchun siz setIntent(Intent)ichkariga qo'ng'iroq qilishingiz kerak onNewIntent(Intent)( getIntent()kelajakda qo'ng'iroq qilsangiz, faoliyat tomonidan saqlangan niyat yangilanadi ).
"singleTop"Ishga tushirish rejimidan foydalangan holda ikkinchi stsenariy odatda idealdir, chunki qidiruv amalga oshirilgandan so'ng, foydalanuvchi qo'shimcha qidiruvlarni amalga oshirishi ehtimoli yaxshi va agar ilovangiz qidirish mumkin bo'lgan faoliyatning bir nechta nusxalarini yaratsa, bu yomon tajriba. Shunday qilib, "singleTop"ilova manifestida qidiruv faoliyatingizni ishga tushirish rejimiga o'rnatishingizni tavsiya qilamiz . Masalan:
android:launchMode="singleTop" >



android:resource="@xml/searchable"/>

Qidiruv kontekst ma'lumotlarini uzatish


Ba'zi hollarda, har bir qidiruv uchun qidiruv so'roviga kerakli tuzatishlar kiritishingiz mumkin. Biroq, agar siz qidiruv mezonlarini foydalanuvchi qidiruvni amalga oshirayotgan faoliyat asosida aniqlamoqchi bo'lsangiz, tizim sizning qidiruv faoliyatingizga yuboradigan qo'shimcha ma'lumotlarni taqdim etishingiz mumkin. Siz qo'shimcha ma'lumotlarni o'tishi mumkin APP_DATA Bundle, jumladan,, ACTION_SEARCHmaqsad.
Ushbu turdagi ma'lumotlarni qidirish mumkin bo'lgan faoliyatingizga onSearchRequested()o'tkazish uchun foydalanuvchi qidiruvni amalga oshirishi mumkin bo'lgan faoliyat usulini bekor qiling Bundle, qo'shimcha ma'lumotlar bilan yarating va startSearch()qidiruv dialogini faollashtirish uchun qo'ng'iroq qiling. Masalan:
KotlinJava
override fun onSearchRequested(): Boolean {
val appData = Bundle().apply {
putBoolean(JARGON, true)
}
startSearch(null, false, appData, false)
return true
}

"Haqiqat"ni qaytarish ushbu qayta qo'ng'iroq hodisasini muvaffaqiyatli hal qilganingizni va startSearch()qidiruv dialogini faollashtirish uchun qo'ng'iroq qilganingizni bildiradi . Foydalanuvchi so‘rov yuborgandan so‘ng, u siz qo‘shgan ma’lumotlar bilan birga qidiruvingiz mumkin bo‘lgan faoliyatingizga yetkaziladi. APP_DATA BundleQidiruvni yaxshilash uchun siz qo'shimcha ma'lumotlarni ajratib olishingiz mumkin . Masalan:


KotlinJava
val jargon: Boolean = intent.getBundleExtra(SearchManager.APP_DATA)?.getBoolean(JARGON) ?: false

Diqqat: Hech qachon qayta qo'ng'iroq qilish startSearch()usulidan tashqari usulni chaqirmang onSearchRequested(). Faoliyatingizda qidiruv oynasini faollashtirish uchun har doim qo'ng'iroq qiling onSearchRequested(). Aks holda, onSearchRequested()chaqirilmaydi va moslashtirishlar ( appDatayuqoridagi misolda qo'shilishi kabi ) o'tkazib yuboriladi.


Qidiruv vidjetidan foydalanish

Rasm 2.SearchView Harakat satrida bir "harakat ko'rinishi", deb vidjet.
SearchViewVidjet Android 3.0 va undan yuqori mavjud. Agar siz Android 3.0 uchun ilovangizni ishlab chiqayotgan bo‘lsangiz va qidiruv vidjetidan foydalanishga qaror qilgan bo‘lsangiz, qidiruv vidjetini qidiruv dialog oynasidan foydalanish o‘rniga (va qidiruv vidjetini joylashtirish o‘rniga) ilovalar paneliga amallar ko‘rinishi sifatida kiritishingizni tavsiya qilamiz. faoliyatingiz tartibida). Misol uchun, 2-rasmda ilovalar panelidagi qidiruv vidjeti ko'rsatilgan.
Qidiruv vidjeti qidiruv dialog oynasi bilan bir xil funksiyalarni taqdim etadi. U foydalanuvchi qidiruvni amalga oshirganda tegishli faoliyatni boshlaydi va u qidiruv takliflarini taqdim etishi va ovozli qidiruvni amalga oshirishi mumkin. Qidiruv vidjetini Harakatlar paneliga qoʻyish imkoni boʻlmasa, uning oʻrniga qidiruv vidjetini faoliyat tartibining biror joyiga qoʻyishingiz mumkin.
Eslatma: Qidiruv vidjetini amallar ko‘rinishi sifatida ishlatganingizda, qidiruv vidjeti Harakatlar paneliga mos kelmasa, qidiruv dialogidan foydalanishni qo‘llab-quvvatlashingiz kerak bo‘lishi mumkin. Vidjet va dialog oynasidan foydalanish haqida quyidagi bo'limga qarang .
Qidiruv vidjetini sozlash
Agar yaratgan ayting keyin qo'ng'iroq qilish konfiguratsiyani va qo'ng'iroq qilish mumkin faoliyatini yuqorida muhokama qilib, har bir izlash yordam yoqib qo'yishingiz kerak SearchView. Buni qidirish mumkin bo'lgan konfiguratsiyani ifodalovchi ob'ektga qo'ng'iroq qilish setSearchableInfo()va uzatish orqali amalga oshirishingiz SearchableInfomumkin.
Siz uchun mos yozuvlar olishingiz mumkin SearchableInfochaqirilib getSearchableInfo()kuni SearchManager.
Misol uchun, agar siz ilovalar panelidaSearchView amal koʻrinishi sifatida foydalanayotgan boʻlsangiz , qayta qoʻngʻiroq paytida vidjetni yoqishingiz kerak :onCreateOptionsMenu()
KotlinJava
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the options menu from XML
val inflater = menuInflater
inflater.inflate(R.menu.options_menu, menu)

// Get the SearchView and set the searchable configuration


val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
(menu.findItem(R.id.menu_search).actionView as SearchView).apply {
// Assumes current activity is the searchable activity
setSearchableInfo(searchManager.getSearchableInfo(componentName))
setIconifiedByDefault(false) // Do not iconify the widget; expand it by default
}

return true


}

Sizga kerak bo'lgan narsa shu. Qidiruv vidjeti endi sozlangan va tizim qidiruv soʻrovlarini sizning qidiriladigan faoliyatingizga yetkazib beradi. Qidiruv vidjeti uchun qidiruv takliflarini ham yoqishingiz mumkin .


Eslatma: Agar siz barcha foydalanuvchi ma'lumotlarini o'zingiz hal qilmoqchi bo'lsangiz, buni ba'zi qayta qo'ng'iroq usullari va voqea tinglovchilari yordamida qilishingiz mumkin. Qo'shimcha ma'lumot olish SearchViewuchun tegishli voqea tinglovchilari uchun mos yozuvlar hujjatlari va uning ichki interfeyslariga qarang .
Harakatlar panelidagi harakat koʻrinishlari haqida qoʻshimcha maʼlumot olish uchun Harakat koʻrinishlari va Harakat provayderlariga qarang .
Boshqa qidiruv vidjeti xususiyatlari
SearchViewVidjet mumkin bir necha qo'shimcha funktsiyalar uchun imkon beradi:
Yuborish tugmasi
Odatiy bo'lib, qidiruv so'rovini yuborish tugmasi mavjud emas, shuning uchun foydalanuvchi qidiruvni boshlash uchun klaviaturadagi "Qaytish" tugmasini bosishi kerak. Siz qo'ng'iroq qilib "yuborish" tugmasini qo'shishingiz mumkin setSubmitButtonEnabled(true).
Qidiruv takliflari uchun soʻrovni takomillashtirish
Qidiruv takliflarini yoqsangiz, odatda foydalanuvchilar shunchaki taklifni tanlashlarini kutasiz, lekin ular taklif qilingan qidiruv soʻrovini ham yaxshilashni xohlashlari mumkin. Har bir taklif yoniga qoʻngʻiroq qilib, foydalanuvchi aniqlashtirish uchun qidiruv maydoniga taklifni kiritadigan tugmani qoʻshishingiz mumkin setQueryRefinementEnabled(true).
Qidiruv maydonining ko'rinishini almashtirish imkoniyati
Odatiy bo'lib, qidiruv vidjeti "belgilangan" bo'lib, u faqat qidiruv belgisi (kattalashtiruvchi oyna) bilan ifodalanadi va foydalanuvchi unga tegsa, qidiruv maydonini ko'rsatish uchun kengaytiriladi. Yuqorida ko'rsatilganidek, qidiruv maydonini sukut bo'yicha qo'ng'iroq qilish orqali ko'rsatishingiz mumkin setIconifiedByDefault(false). Shuningdek, qo'ng'iroq qilish orqali qidiruv vidjeti ko'rinishini o'zgartirishingiz mumkin setIconified().
SearchViewSinfda qidiruv vidjetini sozlash imkonini beruvchi yana bir qancha API mavjud . Biroq, ularning aksariyati qidiruv so'rovlarini yetkazib berish va qidiruv takliflarini ko'rsatish uchun Android tizimidan foydalanish o'rniga, faqat foydalanuvchi ma'lumotlarini o'zingiz bajarganingizda foydalaniladi.
Vidjet va dialog oynasidan foydalanish
Qidiruv vidjetini Harakatlar paneliga harakatlar ko‘rinishi sifatida kiritsangiz va uni “Agar joy bo‘lsa” (sozlash orqali android:showAsAction="ifRoom") Harakatlar panelida ko‘rinishini yoqsangiz , qidiruv vidjeti qidiruv vidjeti sifatida ko‘rinmasligi ehtimoli bor. harakat ko'rinishi, lekin menyu bandi ortiqcha menyuda paydo bo'ladi. Masalan, ilovangiz kichikroq ekranda ishlaganda, qidiruv vidjetini boshqa amallar yoki navigatsiya elementlari bilan birga ko‘rsatish uchun Harakatlar panelida joy yetarli bo‘lmasligi mumkin, shuning uchun menyu bandi o‘rniga ortiqcha menyuda paydo bo‘ladi. To'ldiriladigan menyuga joylashtirilganida, element oddiy menyu elementi kabi ishlaydi va harakat ko'rinishini (qidiruv vidjeti) ko'rsatmaydi.
Ushbu vaziyatni hal qilish uchun qidiruv vidjetini biriktirgan menyu bandi foydalanuvchi uni toʻlib-toshgan menyudan tanlaganida qidiruv dialogini faollashtirishi kerak. Buni amalga oshirish onOptionsItemSelected()uchun siz "Qidirish" menyu bandini boshqarishni amalga oshirishingiz va qo'ng'iroq qilish orqali qidiruv dialogini ochishingiz kerak onSearchRequested().
Harakatlar panelidagi elementlar qanday ishlashi va bu vaziyatni qanday hal qilish haqida ko'proq ma'lumot olish uchun Harakatlar panelini ishlab chiquvchi qo'llanmasiga qarang .
Ovozli qidiruv qo'shilmoqda
Ovozli qidiruv funksiyasini qidirish dialogi yoki vidjetingizga android:voiceSearchModeatributni qidirish mumkin boʻlgan konfiguratsiyaga qoʻshish orqali qoʻshishingiz mumkin. Bu ovozli so'rovni ishga tushiradigan ovozli qidiruv tugmasini qo'shadi. Foydalanuvchi so'zlashni tugatgandan so'ng, transkripsiyalangan qidiruv so'rovi sizning qidirishingiz mumkin bo'lgan faoliyatingizga yuboriladi.
Masalan:

android:label="@string/search_label"
android:hint="@string/search_hint"
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" >

Qiymat showVoiceSearchButtonovozli qidiruvni yoqish uchun talab qilinadi, ikkinchi qiymat esa, launchRecognizer, ovozli qidiruv tugmasi transkripsiyalangan matnni qidirish mumkin bo'lgan faoliyatga qaytaradigan tanuvchini ishga tushirishi kerakligini bildiradi.


Ovozli qidiruv harakatini belgilash uchun qoʻshimcha atributlarni taqdim etishingiz mumkin, masalan, kutilayotgan til va qaytariladigan natijalarning maksimal soni. Mavjud atributlar haqida qo'shimcha ma'lumot olish uchun Qidiriladigan konfiguratsiya ma'lumotnomasiga qarang .

Download 27,79 Mb.

Do'stlaringiz bilan baham:
1   ...   10   11   12   13   14   15   16   17   18




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©www.hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish