数据绑定...与此布局中视图使用的 ID 冲突

问题描述 投票:0回答:1

我在布局文件中使用 元素时遇到问题。确切的错误是:

[databinding] {"msg":"\u003cinclude id\u003d\u0027@+id/displayArea\u0027\u003e conflicts with an ID used by a view in this layout","file":"badlayout/res/layout-land/main.xml","pos":[{"line0":10,"col0":2,"line1":20,"col1":16}]}
[databinding] {"msg":"\u003cinclude id\u003d\u0027@+id/displayArea\u0027\u003e conflicts with an ID used by a view in this layout","file":"badlayout/res/layout-port/main.xml","pos":[{"line0":10,"col0":2,"line1":10,"col1":67}]}

当我在layout-port/main.xml中的

元素中设置
android:id时,就会出现问题:

<include android:id="@+id/displayArea" layout="@layout/display" />

直接在layout-land/main.xml中使用相同的ID:

<LinearLayout android:id="@+id/displayArea"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    ...
</LinearLayout>

实验表明我无法混合搭配这些。我可以在

 标签中或在普通视图中指定 
android:id,但不能同时指定两者。

谁能准确解释一下这条消息的含义以及规则是什么?

这一切都很复杂,因为您也无法在布局文件的顶层设置

android:id
而不遇到不同的问题。

这是一个较旧的应用程序。这些布局文件在 Eclipse 中从来没有给我带来任何麻烦;我在迁移到 Android Studio 后才开始收到错误。


为了完整起见,完整的 xml 文件如下所示:

布局土地/main.xml:

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

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
  <LinearLayout android:id="@+id/displayArea"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:baselineAligned="false">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />
  </LinearLayout>
</LinearLayout>

布局端口/main.xml:

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

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >

  <include android:id="@+id/displayArea" layout="@layout/display" />

</LinearLayout>

布局/display.xml:

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

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="fill_parent" 
        android:layout_height="0dp"
        android:layout_weight="1"
        />
    <TextView android:id="@+id/StatusLine"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        />

</LinearLayout>
android android-studio android-layout
1个回答
0
投票

  1. 失效并重新启动
  2. 记住重新启动Mac

此外,你必须确保没有相同的ID。

© www.soinside.com 2019 - 2024. All rights reserved.