如何在Eclipse中编译我的Android应用程序?

时间:2014-06-23 17:45:18

标签: android eclipse

我正在阅读Android教程,但我遇到了其中一个资源ID问题。

res\menu\main.xml文件中,我在菜单标记中定义了action_entry,如下所示:

    <item
      android:id="@+id/action_search"
      android:icon="@drawable:ic_action_search"
      android:title="@string:action_search"
      app:showAsAction="ifRoom" />

res\values\string.xml文件中,我定义了以下字符串:

<string name="action_search">Search</string>

最后,在OnOptionsItemSelected()函数中,我有以下代码引用该ID:

        switch (item.getItemId()) {
            case R.id.action_search:
                //openSearch();
                return true;
            ...
         }

根据本教程的前一课,@ + id表示在编译应用程序时会生成ID,因此我很自然地希望case R.id.action_search:行出错;但是,当我去运行应用程序时(我认为会在必要时触发编译),我收到一条错误消息,指出我的项目包含在运行应用程序之前必须修复的错误。

如何强制编译应用程序以便将ID添加到包含项目中ID的生成文件中?如果没有实际的编译命令,我会陷入陷阱22的状态:我无法运行应用程序,直到我修复错误,但为了修复错误,我必须编译应用程序以便它生成ID,我知道这样做的唯一方法是运行应用程序。或者,如何让IDE生成新ID,以便应用程序在运行时编译?

2 个答案:

答案 0 :(得分:1)

即使您使用R.java,也应自动更新@+id/文件。但是,如果您的某个XML文件存在问题,它将不会自动更新。

<item
  android:id="@+id/action_search"
  android:icon="@drawable/ic_action_search"
  android:title="@string/action_search"
  app:showAsAction="ifRoom" />

试试这个。

答案 1 :(得分:1)

字符串名称位于R.string类中,而不是R.id

编辑:好的,你还有一个同名的ID,然后应该找到它...尝试清理/重建项目。

此外,如果XML文件中存在任何错误,则必须修复它们以获取生成的Java文件。