Android 如何在片段(Kotlin)中使用componentName?
我正试图用list在两个不同的片段上实现搜索功能。当我尝试使用下面的代码时,它抛出带有componentName的未解析引用。 如何解决这个问题 ListFragment.ktAndroid 如何在片段(Kotlin)中使用componentName?,android,kotlin,Android,Kotlin,我正试图用list在两个不同的片段上实现搜索功能。当我尝试使用下面的代码时,它抛出带有componentName的未解析引用。 如何解决这个问题 ListFragment.kt override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.note_menu, menu) val searchManager = context?.getS
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.note_menu, menu)
val searchManager = context?.getSystemService(Context.SEARCH_SERVICE) as SearchManager
searchView = menu?.findItem(R.id.search_ic)
?.actionView as SearchView
searchView.setSearchableInfo(searchManager
.getSearchableInfo(componentName))
searchView.maxWidth = Integer.MAX_VALUE
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
dailyAdapter.filter.filter(query)
return false
}
override fun onQueryTextChange(newText: String?): Boolean {
dailyAdapter.filter.filter(newText)
return false
}
})
return true
}问题是您不能使用片段中的活动组件。要使用活动的组件,必须使用requireActivity()方法。 所以你的代码应该是这样的
searchView.setSearchableInfo(searchManager.getSearchableInfo(requireActivity().componentName))