I recently working on activating SearchView
in ActionMode
when user click on Search in onOptionsItemSelected
.
However, I cant get access to the SearchView
as after debugging, its actionView
apparently to be null. Can anyone help me with this?
override fun onOptionsItemSelected(item: MenuItem): Boolean {
R.id.chat_search -> {
if (searchActionMode == null) {
searchActionMode = startActionMode(searchActionModeCallBack)
}
}
ActionModeCallBack
private val searchActionModeCallBack = object: ActionMode.Callback {
private lateinit var mSearchView: SearchView
override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_search_message, menu)
moreMenuBtn.isVisible = false
layout_chatbox.hide()
return true
}
override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
val searchItem = menu?.findItem(R.id.search_item_btn)
if(searchItem?.actionView != null) { <---- this seachview.actionView keeps return null
mSearchView = searchItem.actionView as SearchView
mSearchView.isIconified = false
mSearchView.onQueryTextChanged { newText ->
}
}
return true
}
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
when(item?.itemId) {
R.id.search_item_up -> {
"UP".showToast(this@ChatActivity)
}
R.id.search_item_down -> {
"DOWN".showToast(this@ChatActivity)
}
R.id.search_item_btn -> {
"SEARCH".showToast(this@ChatActivity) <-- when click on "Search" Button, "Search" is toasted.
}
}
return false
}
override fun onDestroyActionMode(mode: ActionMode?) {
searchActionMode = null
moreMenuBtn.isVisible = true
layout_chatbox.show()
}
}
menu_search_message.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group android:id="@+id/group_search_mode">
<item
android:id="@+id/search_item_btn"
android:icon="@drawable/ic_baseline_search_24"
app:showAsAction="always"
android:title="@string/search"
app:actionViewClass="androidx.appcompat.widget.SearchView" />
<item
android:id="@+id/search_item_up"
android:icon="@drawable/ic_baseline_arrow_drop_up_24"
app:showAsAction="always"
android:title="@string/up"/>
<item
android:id="@+id/search_item_down"
android:icon="@drawable/ic_baseline_arrow_drop_down_24"
app:showAsAction="always"
android:title="@string/down"/>
</group>
</menu>
I used androidx.appcompat.widget.SearchView
for all of the SearchView
I used. But still I had no idea why I can't access to the SearchView
in ActionMode
. Please give me some help.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…