Слушатели привязки данных - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь использовать привязку данных для запуска функции при возникновении события onClick, я надеюсь, что кто-то скажет мне, что я здесь делаю не так.

Элемент журнала в myClick не делает ' t run.

XML

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="myBinding"
            type="com.example.deletebindingtest.MyFragment" />
    </data>

    <androidx.appcompat.widget.LinearLayoutCompat
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MyFragment"
        android:orientation="vertical">

        <Button
            android:id="@+id/my_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button"
            android:onClick="@{(view) -> myBinding.myClick()}"/>

    </androidx.appcompat.widget.LinearLayoutCompat>
</layout>

My Fragment

class MyFragment : Fragment() {  
  private lateinit var binding: FragmentMyBinding

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

        // Inflate view and obtain an instance of the binding class
        binding = DataBindingUtil.inflate(
            inflater,
            R.layout.fragment_my,
            container,
            false
        )

        binding.lifecycleOwner = viewLifecycleOwner
        return binding.root
    }


    fun myClick() {
        Log.i("TEST", "Its working")
    }
}

Когда я нажимаю на расширение в XML, я попадаю в функцию myClick.

1 Ответ

1 голос
/ 20 июня 2020

включено быстрое исправление onCreateView добавить binding.myBinding=this

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

    // Inflate view and obtain an instance of the binding class
    binding = DataBindingUtil.inflate(
        inflater,
        R.layout.fragment_my,
        container,
        false
    )

    binding.lifecycleOwner = viewLifecycleOwner
    binding.myBinding=this // here
    return binding.root
}

также я предпочитаю привязку слушателя, вы можете проверить это здесь

...