为什么Android Studio报告"URI未注册"?

Xil*_*nic 156 android android-studio

所以我尝试了Android Studio,因为我非常喜欢Resharper,并注意到IDE内置了一些功能.现在创建了一个默认的新项目,我添加了一个新的布局文件,并希望更改现有的默认"hello world"示例布局,并在以下行中出现"URI未注册"错误:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
Run Code Online (Sandbox Code Playgroud)

我还没有对默认生成的项目做任何其他事情.我遇到了另一个似乎相关的问题(Intellij Android项目模式URI没有注册?),但忽略一些东西对我来说很奇怪.我实际上尝试过,但这导致RelativeLayout(以及可能所有其他Android相关的东西)不再被识别(错误消息:"找不到元素'RelativeLayout'的声明").

关于如何解决这个问题的任何想法?

Maz*_*ser 145

你有这个问题,因为你在错误的目的地!布局资源文件的正确目录必须位于"res-layout"而不是"res-all-layout"

  • 啊,是的,你是绝对正确的.我犯的错误是我从<project root>\<project name>\build\res\all\debug\layout打开了文件(默认情况下它是打开的,我想,并且习惯于从上到下工作我猜这解释了混乱).相反,确实应该看一下<project root>\<project name>\src\main\res\layout. (2认同)

eli*_*ley 49

对我来说这是因为我正在使用调试和发布版本变体.我手动添加了新文件夹src/debug/res/layout/some_layout.xml文件,但它无法识别URI.我将构建变量切换为release,然后再调试.这导致Android Studio重新加载某些内容,错误消失了.

编辑:还要检查您是否具有正确的文件名.我通过添加调试AndroidManifest.xml再次遇到此问题,但错误地将其命名为AndroidManifest.xml.xml.

  • 这对我有用.对于那些寻找如何切换构建变体的人来说,它位于AS的最左侧面板,侧面写入.单击它,然后在它下面"debug"实际上是一个下拉列表. (2认同)
  • 对我来说,也是如此。如果您正在查看应用程序定制的不同风格布局,那么 Android Studio 加载的内容,您会收到错误消息。 (2认同)

Vin*_*ing 39

我使用Intellij IDEA,但我认为它也适用于Android Studio,你能看到IDE右下角的"事件日志"吗,它有一些消息,比如" 在项目配置中检测到Android框架 ",这意味着你应该有一个框架配置.如果是这样,请点击消息链接.
以同样的方式,您可以转到" 文件>项目结构>模块 ",然后添加Android Facet.

在此输入图像描述

顺便说一句,如果我想像你一样使用自定义命名空间,我会将资源标识符写为我的包名,因为我定义了清单元素的AndroidManifest.xml包属性,下面是我的代码.

<manifest package="com.my.name.android">
    ...
</manifest>

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/apk/res/com.my.name.android">
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

希望这对你有所帮助.

  • @Michael Alan Huff,非常感谢你教我. (2认同)

Reg*_*_AG 16

我没有任何理由突然出现这个问题.我刚关闭了Android Studio中的所有标签,并重新打开了有问题的xml文件.问题解决了!:)

  • 救了我的命... :) (3认同)

Kul*_*kar 7

在Android Studio 3.1.2中,发生此错误是由于对缓存的验证错误。

转到项目文件夹并删除.idea文件夹中的所有内容

这将删除缓存,并重新加载项目将创建新的缓存文件夹,并且一切顺利。,


Dal*_*ngh 6

它是一个插件问题.

  1. 重启你的android工作室.
  2. 它将显示启用插件的弹出窗口
  3. 单击启用插件,然后单击"确定".

然后它将自动重启你的工作室,工作将很好.

希望它会奏效.


and*_*tan 5

我的问题是我的文件夹结构如下:

MyProject/ res/ layout/ main.xml layout-land/ main.xml

(我的Slayout-land文件夹在我的layout文件夹中)

我将结构更改为此,它对我有用:

MyProject/ res/ layout/ main.xml layout-land/ main.xml

我希望这个对你有用!


May*_*Raj 5

不知道此错误背后的原因,但我在某个地方发现了此错误并解决了我的问题。

  • 转到“文件>项目结构>模块”
  • 点击“添加(+)
  • 点击“ Android”和“应用”,然后点击“确定”


Mah*_*ahi 5

在 Build Variants 中选择适当的风味。

如果您正在 Flavour1 下查看特定文件,请在 BuildVariants 窗口中选择该风格。

如果您的 IDE 是 Android Studio(撰写本文时为 3.2.1),您应该会在左下方找到 Build Variants 窗口,垂直对齐。