Diseño TabHost y DataBinding

He leído sobre el enlace de datos android y quiero usarlo en mi aplicación, pero no en la fase de diseño xml.

Tengo activity_main.xml como este:

 <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> </data> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/tab1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/tab1"/> </LinearLayout> </FrameLayout> </LinearLayout> </TabHost> </layout> 

Y tab1.xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout <EditText ... 

Quiero aplicar enlace de datos a la última EditText , pero si inserto

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

esto causa

 activity_main.xml:9: AAPT: Error parsing XML: duplicate attribute 

La pregunta es, ¿cómo debo combinar enlace de datos y TabHost para enlazar EditText en el diseño incluido?

Aquí está el repo con el código de la pregunta

Aquí está su sugerencia XML: duplicate attribute . Incluso le dice un número de línea en el mensaje de error, 9, que está aproximadamente dentro del elemento TabHost.

Ahora, ¿qué atributo XML se duplica? El espacio de nombres ( xmlns:android )

Elimine el que no esté en el elemento superior del XML en la etiqueta de diseño

El problema es con xmlns:android

Sólo xmlns:android="http://schemas.android.com/apk/res/android" quitar este xmlns:android="http://schemas.android.com/apk/res/android" y su hecho.

En cuanto a DataBinding , no creo que lo han implementado, excepto que la etiqueta

Toma <data> en tu activity_main.xml

 <data> <variable name="name" type="String"/> </data> 

Pase con el diseño incluido

 <include layout="@layout/tab1" app:name="@{name}"/> 

Ahora captura esos datos dentro de tu tab1.xml

 <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="name" type="String"/> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/edit1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_column="1" android:layout_row="0" android:ems="1" android:inputType="text" android:text="@{name}" /> </LinearLayout> </layout> 

Casi has terminado, ahora solo necesitas implementar la vinculación en tu actividad

 ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main); binding.setName("Email Address"); 

Dos errores que puedo ver aquí, usted utilizó el espacio de nombre xmlns dos veces, y tab1 id dos veces. Quite un espacio de nombre y cambie ID.

  <LinearLayout android:id="@+id/tab1" /* you used tab1 here as id*/ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/tab1"/> /* you used tab1 here as id */ 
  • Android 2-Way DataBinding con vista personalizada y Attr personalizado
  • Error al intentar utilizar la variable de contexto proporcionada de enlace de datos con BaseObservable
  • No se encuentra el método de inflado para mi vinculación (mediante Android, vinculación de datos).
  • Enlace de datos: enlaza método único de escucha con múltiples métodos
  • Android incluye diseño dinámico con la biblioteca de enlace de datos
  • ViewDataBinding getVariable?
  • Enlace de datos de Android ObservableList problema de comportamiento
  • Crear vinculación de dos vías con vinculación de datos de Android
  • Vinculación de datos de observador de eventos de Android para ViewPager
  • Sintaxis de sentencias condicionales en el diseño XML de Android
  • Uso de la vinculación de datos de Android, ¿cómo especificar un texto ficticio (o "predeterminado") que se mostrará durante la vista previa de diseño en Android Studio?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.