Создать setOnClickListener в привязке - PullRequest
0 голосов
/ 28 мая 2020

Надеюсь, простой запрос; в моем фрагменте я установил несколько прослушивателей кликов:

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        Log.d(TAG, "onCreateView()")
        activity?.let {
            businessViewModel = ViewModelProvider(it).get(BusinessViewModel::class.java)
            Log.d(TAG, "businessViewModel = ${businessViewModel.toString()}")
        }

        // Inflate the layout for this fragment
        val binding: SitesFragmentBinding = DataBindingUtil.inflate(
            inflater, R.layout.sites_fragment, container, false
        )

        binding.apply {
            sitesOverflowOptionsMenuButton.setOnClickListener {
                showPopUp(it)
                Log.d(TAG, "sitesOverflowOptionsMenuButton clicked, showPopUp(it)")

            }

            sitesDrawerMenuButton.setOnClickListener {
                (activity as BusinessActivity).openCloseNavigationDrawer()
                Log.d(TAG, "sitesDrawerMenuButton clicked, openCloseNavigationDrawer()")
            }

            sitesFloatingActionButtonAdd.setOnClickListener {
                businessViewModel.getCurrentSite("")
                navController.navigate(R.id.action_sitesFragment_to_siteAddEditFragment)
                Log.d(TAG,"sitesFloatingActionButtonAdd clicked, navigating to siteAddEditFragment")
            }

            sitesClearIconImageView.setOnClickListener {
                sitesSearchFilterEditTextView.text.clear()
            }

            sitesFilterIconImageView.setOnClickListener {
                filterDialog()
            }


            sitesFilterIconImageView.setOnLongClickListener{
            
            // This doesn't work - type mismatch, required Boolean, found Unit
            
            }

        }

        return binding.root
    }

Как указано выше, setOnClickListener имеет несоответствие типа (требуется Boolean, найдено Unit).

Он предлагает создать функцию расширения, но я могу ' Кажется, это не работает ..

1 Ответ

1 голос
/ 28 мая 2020

Просто верните логическое значение в возвращении лямбда.

sitesFilterIconImageView.setOnLongClickListener{
   //Your other code
   false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...