У меня есть android .widget.SearchView в ActionBar моего приложения. Когда я начинаю печатать, он показывает результаты моего ContentProvider, подключенного к базе данных Room. Все это отлично работает на эмуляторе, но на моем реальном устройстве, когда я касаюсь текстового поля SearchView, я на мгновение вижу свои результаты, а затем всплывающее окно заменяется этим странным всплывающим окном, показывающим два телефонных номера (это числа, которые мне известны). Если я начну печатать, это поле исчезнет, и правильные результаты снова начнут отображаться.
поиск со странным всплывающим окном
Я не понимаю, что может быть вызывая это. Вот код, относящийся к SearchView.
MainActivity.kt
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.bottom_nav_menu, menu)
var searchItem = menu.findItem(R.id.ItemSearchView);
var searchView : SearchView = searchItem.actionView as SearchView;
val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
val searchableInfo = searchManager.getSearchableInfo(componentName)
searchView.setSearchableInfo(searchableInfo)
searchView.isIconifiedByDefault = false
searchView.maxWidth = 10000;
searchView.onFocusChangeListener = View.OnFocusChangeListener { view, b ->
Log.i(TAG, "SearchView focus is ${b}")
}
return super.onCreateOptionsMenu(menu)
}
с возможностью поиска. xml
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/honey_where"
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
android:searchSuggestAuthority=
"com.example.contentProviders.SearchSuggestionProvider"
android:searchSuggestIntentAction="android.intent.action.VIEW"
android:searchSuggestThreshold="0"
/>
bottom_nav_menu. xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_locationlist"
android:iconTint="@color/colorPrimary"
android:icon="@android:drawable/ic_menu_mapmode"
android:title="@string/title_locations" />
<item
android:id="@+id/ItemSearchView"
android:icon="@drawable/ic_icon"
android:iconTint="@color/colorAccent"
android:iconifiedByDefault="false"
android:queryHint="Search"
android:theme="@style/AppSearchView"
android:inputType="textAutoComplete"
app:actionLayout="@layout/searchview"
app:showAsAction="always"
android:title="" />
<item
android:id="@+id/navigation_settings"
android:icon="@android:drawable/ic_menu_manage"
android:title="@string/title_settings" />
</menu>
AndroidManifest. xml
<provider
android:name=".contentProviders.SearchSuggestionProvider"
android:authorities=
"com.example.contentProviders.SearchSuggestionProvider"
android:enabled="true"
android:exported="false"></provider>
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/AppTheme"
tools:ignore="LockedOrientationActivity">
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
</activity>
Это пример нормальной работы SearchView после двух символов. При прикосновении к нему появляется странное всплывающее окно, один символ ничего не делает, два символа начинают действовать нормально, также это отлично работает в эмуляторе: SearchView работает нормально
Я перепробовал все, что могу придумать из, но я полностью застрял на этом. Любая помощь, которую может предоставить кто угодно, даже просто подсказка в правильном направлении, была бы очень принята.
TL; DR Я пытаюсь выяснить источник этого всплывающего окна, которое отменяет мой пользовательский поиск, зная, что это будет по крайней мере, помогите мне найти способы избавиться от этого. И если кто-нибудь знает, как от него избавиться, это было бы здорово.
ОБНОВЛЕНИЕ: 29 мая 2020 г .:
Я пробовал пройтись по исходному коду SearchView, чтобы увидеть, что происходит, но «своп», кажется, происходит после того, как SearchSuggestion предоставил свои предложения. Есть ли что-то «более глубокое», которое могло бы здесь активироваться?
В качестве примечания, это на OnePlus 6T на случай, если они могли добавить какой-то собственный код.