首页 文章

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

提问于
浏览
133

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"

我发现了另一个似乎有关系的问题(Intellij Android project schema URI not registered?),但是忽略一些事情对我来说很奇怪 . 我实际上尝试过,但这导致 RelativeLayout (可能还有所有其他Android相关的东西)不再被识别(错误消息:"Cannot find the declaration of element 'RelativeLayout'") .

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

29 回答

  • 0

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

  • 0

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

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

  • 36

    我使用Intellij IDEA,但我认为它也适用于Android Studio,你能看到IDE右下角的"Event Log",它有一些像“ Android framework is detected in the project Configure ”这样的消息,这意味着你应该有一个框架配置 . 如果是这样,请点击消息链接 .
    以同样的方式,您可以转到“ File > Project Structure > Modules ”,然后添加Android Facet .

    enter image description here

    顺便说一句,如果我想像你一样使用自定义命名空间,我会将资源标识符写为我的包名,因为我定义了清单元素的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>
    

    希望这对你有所帮助 .

  • 4

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

  • 129

    它是一个插件问题 .

    • 重启你的android工作室 .

    • 它将显示启用插件的弹出窗口

    • 点击启用插件,然后点击Okay .

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

    希望它会奏效 .

  • 44

    不知道这个错误背后的原因,但我发现了这个地方,它解决了我的问题 .

    • 转到"File > Project Structure > Modules"

    • 点击“添加 (+)

    • 单击"android"和"apply"然后"ok"

  • 1

    事实证明我正在编辑xml的DEBUG版本,要修复它,只需关闭有错误的选项卡并重新打开它

  • -2

    我有同样的错误 . 我通过将项目再次导入android studio解决了这个问题 .

  • 0

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

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

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

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

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

    我希望这个对你有用!

  • 1

    对我来说插件 Android Support 以某种方式获得禁用 . 再次启用插件对我有用 .

    Settings > Plugins > Android Support
    
  • 3

    有时,此错误与清单中的其他错误相关 . 检查是否存在某些缺失的依赖项以及是否已关闭所有标记 . 在我的情况下,我删除了/ res文件夹中的文件夹,我恢复了它,并且该错误消失了 .

  • 0

    对我来说,有问题的xml文件缺少 Headers 行...

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

    添加修复它 .

  • 1

    再次开始这样做,现在实际上工作的是在build.gradle中添加一些垃圾 . 然后尝试同步 . 当它失败时,移除垃圾并重新同步 . 索引后,它的工作原理 .

  • 0
    • 转到"Preferences > Languages&Frameworks > Schemas and DTDS"

    • 点击"add(+)"

    • 单击"apply"然后"ok"

    希望它会奏效 .

  • 16

    对我来说,我在build.gradle(模块应用程序)中缺少 compile 'com.android.support:cardview-v7:25.0.1'

  • 2

    在Android Studio 3.1.2中,由于缓存内存的验证错误而发生此错误 .

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

    这将删除缓存并重新加载项目将创建新的缓存内存文件夹并使其好用 .

  • 2

    Android Studio中的新构建系统会创建一个 build 文件夹 . 此文件夹上的代码检查barfs以及 gradle 文件夹 . 运行代码检查时,应该可以忽略这些文件夹 .

    我在Android Studio团队提出了一个问题:

    https://code.google.com/p/android/issues/detail?id=56415

  • 0

    我现在遇到了这个问题 - 我在布局文件夹下创建了一个新文件夹,其中包含与我的应用程序的“主页”相关的所有xml,然后是另一个与我的“设置”页面相关的文件夹,因为我想组织我的XML .

    但是,android只识别xmls的布局文件夹,而不是layout / home或layout / settings文件夹,这就是为什么它给了我错误 .

    感谢Mazen Kasser的回答,他协助我搞清楚了 .

  • 6

    最近尝试将现有应用程序迁移到材料设计 . 我需要做的就是更改项目的Compile SDK Version . 档案|项目设置 . 选择应用程序并为Lollipop或更高版本选择Compile SDK版本 .

  • 4

    这里提到的任何解决方我会发布我的问题以防万一对任何人都有帮助 . 在我的情况下,错误发生在使用 data binding . 似乎使用数据绑定xmls中间体是创建的 . 如果尝试打开错误时出现错误,则会显示带有此“ URI not registered ”的中间xml,而不是使用错误打开正确的xml .

  • 0

    在大多数情况下,它将由Rebuild Project解决

  • 1

    对我来说,我手动将一个xml文件放在values文件夹中 . 然后问题显示 . 我还注意到我给出的xml文件名和数组名是一样的 . 所以,我重命名了xml文件名并重新安装了Android工作室 .

    问题已经过去了!

  • 0

    我有这个问题,对我而言,这是由于在Android Studio之外创建和操作资源文件 . 我按照通过Android Studio创建新资源文件和文件夹的说明解决了问题 . 您需要创建一个新的资源文件Not目录 . 如果需要,它将允许您为您指定或创建目录 . 如果要为不同版本的布局创建目录,请在顶部输入信息,包括要复制到新文件夹的资源文件的名称,然后选择版本并输入Android版本 . 它将创建适当的目录,其中包含资源的副本 .

  • 0

    另一个建议,这是我的解决方案:我得到了错误

    <resources xmlns:ns1="http://schemas.android.com/tools" xmlns:ns2="urn:oasis:names:tc:xliff:document:1.2">
    

    在构建过程中自动生成的values.xml文件中 .

    它是通过在styles.xml文件中添加 android 前缀来解决的 .

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="textColorPrimary">@color/textColorPrimary</item>
            <item name="colorBackground">@color/colorPrimaryDark</item>
        </style>
    

    必须改为

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="android:textColorPrimary">@color/textColorPrimary</item>
            <item name="android:colorBackground">@color/colorPrimaryDark</item>
        </style>
    
  • 1

    对我来说,我从gitlab克隆一个项目,有目录:

    TradeClient / TradeClient / app / ...

    然后我遇到这个问题,我通过以下方法解决问题:

    • 删除中间路径"TradeClient",作为TradeClient / app / ...

    • 然后文件 - >使高速缓存/重新启动无效...

  • 0

    到目前为止我还没有看到过为我修复过的内容 - 如果你有多种“风味”,请确保当前选择的“构建变体”与您尝试查看的布局文件的风格相匹配 .

  • 0

    在Build Variants中选择适当的flavor .

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

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

  • 1

    项目导入后立即收到此错误的任何人都可能遇到一个不成功的初始gradle导入/同步 . 通常会遇到严重错误(右下角闪烁的感叹号) . 对我来说,这是一个非常奇怪的原因(项目文件夹符号链接):https://stackoverflow.com/a/52952148/44166

  • 0

    尝试安装android tracker插件 . 你会在工作室找到它 .

    重启工作室

相关问题