Search code examples
androidxmlandroid-layoutandroid-databinding

Android - Get text from one textView and set to another with Android Data Binding


How can I set text from one textView to another? If I try like this:

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="SomeText" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{textView1.getText()}" />

I`m getting error:

            Found data binding errors.
        ****/ data binding error ****msg:Identifiers must have user defined types from the XML file. textView1 is missing it
        loc:51:32 - 51:41
        ****\ data binding error ****

I tried many options but it didn’t work out. Thanks in advance for help!


Solution

  • for me this works perfectly fine

    <?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:android="http://schemas.android.com/apk/res/android">
    
        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
    
            <TextView
                    android:id="@+id/textView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="something" />
    
            <TextView
                    android:id="@+id/textView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@{textView1.text}" />
    
        </LinearLayout>
    </layout>
    
    
    class SimpleFragment : Fragment() {
    
        companion object {
            fun newInstance() = SimpleFragment()
        }
    
        private lateinit var binding: SimpleFragmentBinding
    
        override fun onCreateView(
            inflater: LayoutInflater, container: ViewGroup?,
            savedInstanceState: Bundle?
        ): View? {
            String
            binding = SimpleFragmentBinding.inflate(inflater)
            return binding.root
        }
    
        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
            super.onViewCreated(view, savedInstanceState)
            textView1.text = "something else"
        }
    }