gpt4 book ai didi

Android Databinding xml重复属性

转载 作者:IT老高 更新时间:2023-10-28 23:01:35 25 4
gpt4 key购买 nike

我最近开始开发一个使用数据绑定(bind)的 android 应用程序。我现在的问题是由于此错误而无法运行该应用程序:

Error:(10) Error parsing XML: duplicate attribute

使用数据绑定(bind)的每个文件中都会发生错误(我正在使用 fragment )。我现在用谷歌搜索了大约 3 个小时,但找不到解决方案。

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;
}
}

以及发生错误的xml文件(debug\layout\fragment_tests.xml)。 layout_width 和 layout_height 被标记为错误:

    <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>

我真的希望有人可以帮助我。

编辑:这里是 STViewModel 类:

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);
}
}

最佳答案

我刚刚找到了解决方案。我只需要从 <layout> 中删除 layout_width 和 layout_height定义。

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

而不是

<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">

关于Android Databinding xml重复属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40103643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com