已经生成了R.java,仍然无法将其解析为变量'

时间:2013-04-09 08:24:28

标签: java android xml

我认为它可能与包有关,但我找不到错误。我的xml文件中没有错误(红色标记),并且我的所有drawable和xml文件都符合命名约定。我已经尝试清理项目,并且在任何地方都没有导入R.java。

找不到R.java的类是:

  com.datafetcher.main.Menu.java
  com.datafetcher.showperson.MainActivity.java
  com.datafetcher.showperson.DisplayMessageActivity.java

在Android Manifest中我声明了:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.datafetcher"
  ...

宣布活动:

<activity
        android:name=".main.Menu"
        android:label="@string/title_activity_display_message">
          <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

    <activity
        android:name=".showperson.MainActivity"
        android:label="@string/app_name" 
        android:parentActivityName="com.datafetcher.main.Menu" >


    </activity>

    <activity
        android:name=".showperson.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.datafetcher.main.Menu" >

    </activity>

我的R.java生成为gen / com.datafetcher.R.java。 为什么我不能在我的代码中使用它?

这是一个不错的5秒编辑。我真的应该导入com.datafetcher.R吗?我只是因为某种原因尝试过,而且它有效。我之前从未这样做过,我以为它是以某种方式暗中完成的。

5 个答案:

答案 0 :(得分:2)

对此的一个解决方案是显式导入R.java文件。通过这个例子,它将是:

import com.datafetcher.R;

您需要访问它的任何地方。

答案 1 :(得分:1)

有时,当您从其他软件包导入R时会发生这种情况。例如,您使用com.example.foo包从Eclipse中的一个项目复制文本,Eclipse为该包的R插入一个import指令。但生成的R属于另一个包。在这种情况下,您必须删除错误的导入。

顺便说一句,您是否看到所有资源ID未找到或仅部分? (在同一个文件中,在不同的文件中?)

另一种可能性是您的应用程序包和活动包是不同的。 在这种情况下,您需要和显式的import语句。

在您的情况下,类com.datafetcher.Rcom.datafetcher.main.Menu属于不同的包,即com.datafetchercom.datafetcher.main。在Java中,类在没有显式导入的情况下查看同一包中的其他类,不同包中的类仅在导入后才可见。

答案 2 :(得分:0)

我非常想到这个问题......通常清理或构建项目会解决这个问题。

并且有时候某些文件名或引用类似于例如一般命名约定不接受ic-launcher等,(命名文件时不接受此-。复制代码时也可能触发这种情况,因此请检查代码,因为我要导入项目中找不到的类。

这主要是导致 R 腐败的原因。我希望能解决你的问题。

答案 3 :(得分:0)

我遇到了同样的问题,因为我忘了将gen文件夹添加到构建路径。

右键单击gen文件夹,然后转到&#34; Build Path&#34; &GT; &#34;用作源文件夹&#34;

答案 4 :(得分:-1)

从项目选项卡中清除项目,而不是再次构建项目并删除导入android