0

在这个应用程序中,我尝试SearchView.OnQueryTextListener像这样在单独的 kotlin 文件中实现

import androidx.appcompat.widget.SearchView

inline fun SearchView.OnQueryTextListener(crossinline listener: (String) -> Unit) {
    this.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
        override fun onQueryTextSubmit(query: String?): Boolean {
            return true
        }

        override fun onQueryTextChange(newText: String?): Boolean {
            listener(newText.orEmpty())
            return true
        }

    })

}

但是当我尝试在片段中使用它时,我在其他方法中看不到它,我看到了这个错误Interface OnQueryTextListener does not have constructors

在此处输入图像描述

片段的完整代码

AndroidEntryPoint
class TasksFragment : Fragment(R.layout.fragment_tasks) {

    private val tasksViewModel: TasksViewModel by viewModels()
    private var binding: FragmentTasksBinding?=null

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {

        binding = FragmentTasksBinding.inflate(inflater, container, false)

        val tasksAdapter:TasksAdapter = TasksAdapter()

        binding?.apply {
            recyclerViewTasks.apply {
                adapter = tasksAdapter
                layoutManager = LinearLayoutManager(requireContext())
                setHasFixedSize(true)

            }
        }

        tasksViewModel.task.observe(viewLifecycleOwner, {
            tasksAdapter.submitList(it)
        })

        return binding!!.root
    }

    override fun onDestroyView() {
        super.onDestroyView()
        binding = null
    }

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        inflater.inflate(R.menu.menu_fragment_tasks,menu)

        val searchItem = menu.findItem(R.id.action_search)
        val searchView = searchItem.actionView as SearchView

        searchView.OnQueryTextListener{ //

        }


    }


}
4

1 回答 1

2

您的函数名称OnQueryTextListener似乎与接口名称冲突SearchView.OnQueryTextListener,因此请使用其他名称。

无论如何建议以小写开头的函数名称,因此将 fun 更改为 eg。inline fun SearchView.onQueryTextListener(...)应该修复它。

于 2021-06-14T10:55:35.987 回答