I recently started developing on an android application which uses databinding. My problem now is that I can't run the app because of this error:
Error:(10) Error parsing XML: duplicate attribute
The error occurs in every file using databinding (I am using fragments). I googled for like 3 hours now and I can't find the solution.
build.gradle:
apply plugin: 'com.android.application' android { dexOptions { preDexLibraries = false javaMaxHeapSize "2g" } compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "at.blacktasty.schooltoolmobile" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } dataBinding { enabled = true } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile files('libs/eneter-messaging-android-7.0.1.jar') compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0' compile 'com.android.support:support-v4:23.4.0' testCompile 'junit:junit:4.12' }
fragment_tests.xml:
<layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="layout.tests"> <data> <variable name="deadline" type="at.blacktasty.schooltoolmobile.viewmodel.STViewModel"/> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/list_tests" android:entries="@{deadline.deadline}"/> </LinearLayout> </layout>
tests.java:
package layout; import android.databinding.DataBindingUtil; import android.os.Bundle; import android.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import at.blacktasty.schooltoolmobile.R; import at.blacktasty.schooltoolmobile.databinding.FragmentSyncBinding; import at.blacktasty.schooltoolmobile.databinding.FragmentTestsBinding; import at.blacktasty.schooltoolmobile.viewmodel.STViewModel; /** * A simple {@link Fragment} subclass. * create an instance of this fragment. */ public class tests extends Fragment { private STViewModel stViewModel; public tests() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { stViewModel = new STViewModel(); FragmentTestsBinding binding = DataBindingUtil.inflate( inflater, R.layout.fragment_tests, container, false); View view = binding.getRoot(); binding.setDeadline(stViewModel); return view; } }
And the xml file where the error occurs (debug\layout\fragment_tests.xml). layout_width and layout_height are marked as error:
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:tag="layout/fragment_tests_0" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="layout.tests"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/list_tests" android:tag="binding_1" /> </LinearLayout>
I really hope someone can help me out.
EDIT: Here the STViewModel class:
public class STViewModel extends BaseObservable { private ObservableArrayList<Deadline> m_deadline = new ObservableArrayList<>(); @Bindable public ObservableArrayList<Deadline> getDeadline(){ return m_deadline; } public void setDeadline(ObservableArrayList<Deadline> value){ m_deadline = value; notifyPropertyChanged(BR.deadline); } }
I've just found out what the solution is. I just had to delete layout_width and layout_height from the <layout>
definition.
<layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="layout.tests">
instead of
<layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="layout.tests">
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With