【问题标题】:Android Studio not identifying xml file as layout fileAndroid Studio 未将 xml 文件识别为布局文件
【发布时间】:2016-05-11 16:37:41
【问题描述】:

我不小心在屏幕截图中使用New -> File 菜单创建了drawer_list_item.xml,而不是New -> Layout resource file,现在我无法在设计模式下将其作为常规布局文件打开。它以纯文本文件的形式打开。

有什么办法可以改变它的类型。我通过 Android Studio 的设置找不到与此相关的任何内容

文件内容:

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

              <TextView
              android:layout_width="match_parent"
              android:layout_height="match_parent" />

  </LinearLayout>

编辑我尝试的更多内容:

  • 重新创建不起作用,因为它以相同的方式创建它。但是,当我在删除后重新创建它时,它会给出以下异常。我关闭窗口,旧文本文件重新出现

            null
    java.lang.AssertionError
    at org.jetbrains.android.util.AndroidResourceUtil.createFileResource(AndroidResourceUtil.java:1251)
    at org.jetbrains.android.actions.CreateTypedResourceFileAction.doCreateAndNavigate(CreateTypedResourceFileAction.java:131)
    at org.jetbrains.android.actions.CreateMultiRootResourceFileAction.create(CreateMultiRootResourceFileAction.java:108)
    at org.jetbrains.android.actions.CreateResourceActionBase$MyInputValidator.create(CreateResourceActionBase.java:292)
    at com.intellij.ide.actions.ElementCreator$1.run(ElementCreator.java:73)
    at com.intellij.openapi.application.RunResult.run(RunResult.java:35)
    at com.intellij.openapi.command.WriteCommandAction$2$1.run(WriteCommandAction.java:114)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1010)
    at com.intellij.openapi.command.WriteCommandAction$2.run(WriteCommandAction.java:111)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:124)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:99)
    at com.intellij.openapi.command.WriteCommandAction.performWriteCommandAction(WriteCommandAction.java:108)
    at com.intellij.openapi.command.WriteCommandAction.execute(WriteCommandAction.java:80)
    at com.intellij.ide.actions.ElementCreator.tryCreate(ElementCreator.java:92)
    at org.jetbrains.android.actions.CreateResourceActionBase$MyInputValidator.canClose(CreateResourceActionBase.java:302)
    at org.jetbrains.android.actions.CreateMultiRootResourceFileAction$MyDialog.doOKAction(CreateMultiRootResourceFileAction.java:174)
    at com.intellij.openapi.ui.DialogWrapper$OkAction.doAction(DialogWrapper.java:1833)
    at com.intellij.openapi.ui.DialogWrapper$DialogWrapperAction.actionPerformed(DialogWrapper.java:1799)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6535)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6300)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4891)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:866)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:650)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:381)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
    at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)
    at java.awt.Dialog.show(Dialog.java:1084)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:792)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:465)
    at com.intellij.openapi.ui.DialogWrapper.invokeShow(DialogWrapper.java:1638)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1587)
    at org.jetbrains.android.actions.CreateMultiRootResourceFileAction.invokeDialog(CreateMultiRootResourceFileAction.java:80)
    at org.jetbrains.android.actions.CreateResourceActionBase.actionPerformed(CreateResourceActionBase.java:183)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:182)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter$1.run(ActionMenuItem.java:311)
    at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:958)
    at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:124)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:281)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:109)
    at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:513)
    at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:45)
    at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:533)
    at java.awt.Component.processMouseEvent(Component.java:6535)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6300)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4891)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:866)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:650)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:381)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    
  • 如果我将文件重命名为drawer_item.xml,它将获得图标并被视为布局文件。如果我将它重命名为drawer_list_item.xml,问题又回来了。所以它可能将它作为纯文本文件索引到某个地方......

  • 使缓存无效/重新启动不能解决问题
  • 尝试将 .idea/workspakce.xml 重命名为 .idea/workspace.xml.bk,以便在我遗漏某些内容时重新创建它 - 仍然没有运气。我什至尝试从根文件夹中删除 .idea 文件夹和 app.iml 文件,但没有修复

【问题讨论】:

  • 为什么不直接删除并重新制作它
  • 我试过了,但它以相同的方式创建它
  • 第二次New -&gt; Layout resource file了吗?
  • 我很好奇,因为 AS 应该将 .xml 文件识别为布局文件并显示 xml 图标(就像在您的 activity_details.xml 中一样)。我刚刚尝试使用 new->file 制作 test.xml,它给了我正确的 .xml 图标。也许尝试重新启动 AS
  • 有些不同步,我推荐file-&gt;invalidating caches and restart.

标签: android xml android-layout android-studio intellij-idea


【解决方案1】:

由于其中一个活动文件中的importandroid.R,我遇到了类似的问题。刚刚删除它,现在一切都很好。

【讨论】:

    【解决方案2】:

    当 Android Studio 创建错误的索引/缓存时,有时会发生这种情况。

    1. 转到文件菜单
    2. 点击使缓存失效/重启
    3. 重新启动 IDE 并等待 IDE 重新索引文件

    做完这些应该没问题...

    【讨论】:

    • 每次添加新的资源文件都得重启Android Studio,很不方便
    • @lollerskates 如果需要,您可以将此错误报告给 Jet-Brains 公司
    • 不幸的是,即使缓存无效并重新启动,它仍然无法识别文件
    • @LenaBru 首先尝试其他答案,如果它们不起作用,请从文件菜单中完全关闭 android studio 中的项目,然后移至主项目文件夹内的 .idea 文件夹并将其删除,然后从“文件”菜单“打开”再次打开您的项目。您的 android studio 会重新生成一个新的 .idea 文件夹,并且项目缓存会刷新!希望对您有所帮助
    【解决方案3】:

    Preferences -&gt; File Types 并删除 Registered Pattern

    【讨论】:

      【解决方案4】:

      我只需在项目视图中右键单击该文件,然后在 Android Studio 2.2.x 中选择“标记为 XML”

      【讨论】:

      • 遗憾的是,我在那个位置没有“标记为 XML”。
      【解决方案5】:

      找到问题的根源 - 它位于 Android Studio 在您的主目录中创建的配置文件中:~/.AndroidStudioPreview2.0。就我而言,它是~/.AndroidStudioPreview2.0/config/options/filetypes.xml

          <application>
            <component name="FileTypeManager" version="16">
              <ignoreFiles list="*.hprof;*.pyc;*.pyo;*.rbc;*~;.DS_Store;.git;.hg;.svn;CVS;RCS;SCCS;__pycache__;_svn;rcs;" />
              <extensionMap>
                <mapping pattern="drawer_list_item.xml" type="PLAIN_TEXT" />
              </extensionMap>
            </component>
          </application>
      

      因此,似乎我以某种方式使 Android Studio 将该文件名模式 drawer_list_item.xml 索引为纯文本... 从文件中删除该映射条目可以解决问题:&lt;mapping pattern="drawer_list_item.xml" type="PLAIN_TEXT" /&gt;

      【讨论】:

      • 在我的电脑上,filetypes.xml的位置是~/Library/Preferences/AndroidStudioX.X/options/filetypes.xml
      猜你喜欢
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 2014-03-22
      • 1970-01-01
      相关资源
      最近更新 更多