Нет необходимости в новом действии.
Создайте menu.xml
с помощью SearchView
:
<?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">
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_search"
android:title="@string/search"
android:menuCategory="secondary"
app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="androidx.appcompat.widget.SearchView"/>
</menu>
Затем во фрагменте вы хотите отобразить его:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.your_menu_with_search, menu)
setupSearchView(menu.findItem(R.id.action_search).actionView as SearchView)
}
private fun setupSearchView(searchView: SearchView) {
searchView.queryHint = "Your option query hint"
searchView.setOnQueryTextListener(object: SearchView.OnQueryTextListener {
override fun onQueryTextChange(newText: String?): Boolean {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onQueryTextSubmit(query: String?): Boolean {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
})
}
}
Я предполагаю, что вы настроили navController
с помощью панели инструментов, если нет, я сделаю ссылку на документацию, чтобы сделать это, так как это выходит за рамки вашего вопроса, удачи.