在布局中布局 < lay> 在基本布局文件夹[ error ]中没有声明

在 Android Studio 中,我的应用程序布局出现了以下错误:

布局中的布局在基本布局中没有声明 文件夹中查询资源时,这可能导致崩溃 与此限定符不匹配的配置

我得到这个错误的一个布局是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@null" >


<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >


<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top|center_horizontal"
android:adjustViewBounds="true"
android:contentDescription="@string/hello_world"
android:src="@drawable/loading_top" />


<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:adjustViewBounds="true"
android:contentDescription="@string/hello_world"
android:src="@drawable/loading_bottom" />


<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@string/hello_world"
android:background="@color/white"
android:layout_marginBottom="5dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:src="@drawable/loading_logo" />


<ImageView
android:id="@+id/loading"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center|center_vertical"
android:layout_marginBottom="0dp"
android:layout_marginTop="0dp"
android:contentDescription="@string/hello_world"
android:scaleType="fitXY"
android:src="@null" />
</FrameLayout>
</LinearLayout>

我在第一个 LinearLayout 的第一行得到错误。

有人知道如何解决这个错误吗?

谢谢你

更新: 回答我的问题,什么已经解决了我的问题

109015 次浏览

你也可以试试这个:

文件 = > 无效缓存/重新启动 = > 无效和重新启动。

screenshot

在我的案例中,关闭和重新开放 Android 工作室解决了这个问题,重新构建项目或者清除缓存都没有帮助。

我收到这个错误 当移动格拉德模块之间的布局文件。当我重新启动 Android Studio清理项目的时候,它自己解决了问题,所以我不需要走到 使缓存失效那么远。很可能是 编程错误

在我的案例中,谷歌似乎过去期望(或至少接受)不同布局之间的不同名称; 我有一个 time_dialog.xml和一个 time_dialog_landscape.xml。将后者重命名为 time_dialog.xml解决了这个问题。

在我的案例中,我用 这个解决了这个问题:

Android 告诉我这个 Id-error: < a href = “ http://tools.android.com/tips/lint-check”rel = “ noReferrer”> MissingDefaultResource 作为文档说:

如果资源仅定义在带有限定符的文件夹中,如-land 或 - en,并且在基本文件夹中没有默认声明(布局或值等) ,那么如果该资源被访问到 其中设备处于缺少给定的 资格赛。

作为特殊情况,不必在基底中指定绘制项 如果密度文件夹中有匹配项(例如 可绘制的 -mdpi) ,这个图像将被使用和缩放 如果仅在诸如 draable-en-hdpi 之类的文件夹中指定可绘制内容,则 应用程序将在非英语地区崩溃。

在某些情况下,您可能拥有一个资源,比如 a-fr 属性从其他资源引用 相同的限定符(例如 a-fr 样式) ,它本身具有安全 然而,这仍然使得某些人有可能 不小心引用了可绘制的并且崩溃了,所以它是安全的 在基本文件夹中创建一个默认的虚拟备份 可以通过添加工具来抑制这个问题: 在元素上。

(这种情况经常发生在字符串转换中,其中 可能会删除代码和相应的资源,但是忘记了 删除一个翻译。这个场景有一个专用的问题 ID, 使用 id 外部翻译。)

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingDefaultResource" <!--this-->
android:layout_width="match_parent"
android:layout_height="match_parent">

但这是一个简单的解决方案,因为你错过了 Android 中的资源。

我用 文件系统选项解决这个问题。如果 仿生人告诉你关于资源丢失意味着某些东西丢失,你应该补充。

你应该去 app src main res

也许: 右键点击文件丢失的文件夹,显示在 Exporer,回到应用程序 src 的主要资源

你应该被找到

/layout


/layout-normal


/layout-large


/some more folders

您应该找到文件丢失的位置

如果你设计你的布局: 版式 -sw320dp 版式 -sw480dp 版式 -sw600dp 版式 -sw720dp ....

您应该默认添加布局 像这样:

enter image description here

由于工作室或编译器无法在基本布局文件夹中找到资源文件,这个问题似乎正在发生。要解决这个问题,您可能需要将文件创建到不同的布局文件夹中。如果您使用布局文件夹 v21,v25等文件夹为不同的目标设备设计布局,那么您可能还需要将您的资源文件也放在那里。

在我的例子中,出现这个警告是因为在值 name 中使用了“错误”字符(点) :

<dimen name="dp.divider.xlarge">24dp</dimen>

删除点(右键单击名称,然后在 Android Studio 中重构-重命名)解决了这个问题。

我解决了这个问题,只是同步项目与分级

晚会迟到了,但我的情况与上面不同。

我只是 重命名资源和它开始工作。

实际上,我的资源名是 ic _ menu _ black _ 24dp.xml,所以它与 android 的菜单资源有冲突。

对我有效的方法是删除 id 属性

android:id="@+id/[id same as filename]"

从布局资源。

在我的例子中,这个问题是由大写字母引起的。像“-”这样的错误字符也会导致问题。 我把名字从 Activity_disease.xml改成 activity_disease.xml,问题就解决了。

(1)删除原版图。

(2)再次添加布局。

第一步

第二步

在我的案例中,是在文件名中使用大写字母。我把所有东西都用小写字母写了,然后就修好了。

对我来说,以下几个步骤使它发挥了作用:

  1. 从页面中删除所有代码(窗口为 Ctrl + A + X)
  2. 把密码粘回去。

对我来说,没有什么比重新构建项目或使缓存失效更有效的了。

我刚做了 Build > Clean Project

是什么解决了我的问题:

在 Android Studio 中,右键单击布局目录中的文件名,然后选择 重新格式化代码,在下一个屏幕上没有选择特殊的标签框。

不知道这里到底发生了什么,但是起作用了。

在将代码复制/粘贴到 XML 布局文件之后,我遇到了一个问题,但是我通过手动创建文件来解决这个问题。 非常奇怪,因为代码是完全一样的,但不知何故,它修复了这个问题。 我确实尝试过重新启动并执行“ File = > InvalidCache/Restart = > Invalidand Restart”修复程序,但是只有通过手动重新创建文件才能解决这个问题。

注意 ,当您使用不同版本的布局时,比如(大型/小型/正常) ,那么您必须使用相同的主布局文件夹。像这样

enter image description here

在我的例子中显示了同样的错误,因为布局文件和布局文件名是不同的。

我的案例: 布局-土地-> 我的 _ 布局 _ 土地 布局-> 我的 _ 布局

我通过把两个文件名设置为相同来解决这个问题。因为如果您使用的是布局土地,并且在布局土地中有一个文件,那么您必须在布局文件夹中也有一个文件。

我用文件资源管理器复制了文件夹中的 xml 文件,这似乎引起了编码问题。 删除文件并在 Android Studio 中处理它们之后,问题就解决了。

按下-‘ ctrl + A’—— > ‘ ctrl + x’—— > ‘ ctrl + v’)这不会改变任何东西,但显然解决了错误。

无效缓存/重新启动解决了我的问题。

与前一篇文章类似,我必须重命名资源。我最初是通过在项目资源管理器中复制粘贴 .xml文件来创建它的。令人困惑的是,这在资源管理器中具有相同的名称,但是与布局相关联的是一个 land变暗的属性。

我的解决方案是进入文件系统并手动将文件从 layout-land移动到 layout文件夹

在屏幕布局描述中放置 tools:ignore="MissingDefaultResource"为我解决了这个问题。

对我来说,发生这种情况是因为我不小心用空格键而不是下划线来命名文件,即 fragment_item summary.xml而不是 fragment_item_summary.xml

您可能已经启用了增量构建,因此暂时禁用它,错误就会消失。我的案子就是这样。