包R不存在

Taz*_*der 108 android

我得到了可怕的包裹R不存在,它杀了我.代码很好我在市场上运行代码的应用程序.

现在它正在影响简单的webview应用程序.o.0

R.string.app_name错了我的main.xml,string.xml很好.我很困惑.

我为"borrow"一些代码打开了一个旧版本,它被淹没了,R. errors.我做了一个干净,没有任何改变,除了R.android在顶部添加导入.

我甚至加入了Netbeans,我也得到了同样的东西.清洁不起作用.我可以自己写R.java文件吗?

这是什么R东西?不是R.应该对应R.java

Mat*_*ers 125

对于遇到此问题的任何人,我通过重命名命名空间文件夹进行重构.我只是忘了编辑AndroidManifest,这就是我收到此错误的原因.

一定要检查一下.


oco*_*odo 83

只是为了简单起见:

import your.app.package.R;
Run Code Online (Sandbox Code Playgroud)

当然,替换your.app.package你的应用程序包.

在所有利用R资源引用的类,删除任何其他import.R,即import android.R;

  • 使用Cordova时,这是正确的解决方案.用Cordova 3.0.9测试 (3认同)

Ola*_*che 50

TL; DR,如果您收到错误"包R不存在",可能的原因是

  • XML资源文件中的一些错误
    - >修复XML错误
  • 当前包不同于R包(请参阅package AndroidManifest.xml中的属性)
    - > import R类,例如import com.example.android.R;
    - >或者在源代码中使用相应的包,例如package com.example.android;
    - >或者将AndroidManifest.xml中的属性更改为 <manifest xmlns:android="..." package="com.example.android" ...>,如果这是合适的
  • 使用的Rids来自系统资源
    - >不导入android.R,但是使用违规ID 作为前缀android.,例如,android.R.layout.simple_list_item_2
    您可以导入android.R而不是前缀ids,但是您不能再导入应用程序R类,并且必须在应用程序ID前加上,例如com.example.android.R.id.main_menu.

R 是从应用程序的资源自动生成.它包含id这些资源的s,并包含在<manifest> 相应AndroidManifest.xml文件的标记中指定的包中 .

如果资源XML文件中没有错误,则R.java源将在下面的包子目录中生成gen/并编译.


包中还有另一个Randroid.此类android.R包含一些嵌套类,这些类又包含系统资源的ids和其他值.


要在Java中使用类,必须使用整个包命名该类,例如

java.util.List<Object> list = new java.util.ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)

或者导入该类,然后在没有包的情况下使用它

import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)

如果当前类和使用的类都在同一个包中,您也可以在不命名包的情况下使用类,例如

package com.example.android;
public class A {
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)
package com.example.android;
public class B {
    public void useA() {
        A a = new A();
    }
}
Run Code Online (Sandbox Code Playgroud)


J. *_*aes 22

永远不要尝试自己写R课程!

您是否在文件中导入了正确的R类?

import android.R;
Run Code Online (Sandbox Code Playgroud)

代替

import com.example.R;
Run Code Online (Sandbox Code Playgroud)

似乎是很多人的问题.清理和建造后,我的课程有时会导入错误的课程.

  • 但是当我最初编码并编写程序时,我不明白R的东西不在那里. (3认同)

Mil*_*lon 12

如果你在android studio中开发并重构了包名,那么你应该在android manifest和app gradle文件中更改包名.

 applicationId "change here your package name"
Run Code Online (Sandbox Code Playgroud)

并在清单文件中

 package="change here your package name"
Run Code Online (Sandbox Code Playgroud)


nan*_*esh 9

R.java是一个自动生成的文件,如果你在xml文件中有错误,它通常不会被编译.

否您无法编写自己的R.java文件,它必须由资源编译器生成.

检查所有xml文件中的错误.

  • 什么样的错误以及初学者应该如何发现它们? (2认同)

Dom*_*omQ 6

R类是从您的XML文件(UI布局,国际化字符串等)自动生成的Java代码.如果以前的代码(看起来像是),您需要告诉IDE以某种方式重新生成这些文件:

  • 在IntelliJ中,选择工具> Android>为<project>生成源
  • (如果你知道在另一个IDE中的方式,请随时编辑这个答案!)


Ema*_*eco 5

我想它曾经可以工作,但现在却不行。

如果您在MANIFEST文件中更改PACKAGE名称,可能会发生这种情况

<manifest
   package="com.example.android...."
Run Code Online (Sandbox Code Playgroud)

如果要更改软件包名称

  1. 在清单文件中手动更改软件包名称。
  2. 单击您的R.java类,然后按F6。它将允许您将类移动到其他包,并且对该类的所有引用都将被更新。