Java &引用;“你好,世界”;android项目,直接来自书本,有时会产生ActivityNotFoundException

Java &引用;“你好,世界”;android项目,直接来自书本,有时会产生ActivityNotFoundException,java,android,xml,Java,Android,Xml,我只是通过一本教科书来学习如何使用Android(由Jackson学习Android应用程序开发)。目前,我有一个主要的活动课。我正在将意图添加到此活动的菜单,以启动其他四个活动之一,具体取决于哪个选项。所有活动都在同一个包中,并且都已在AndroidManifest.XML文件中声明 我使用交换机案例确定要运行的活动,如下所示: public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId())

我只是通过一本教科书来学习如何使用Android(由Jackson学习Android应用程序开发)。目前,我有一个主要的活动课。我正在将意图添加到此活动的菜单,以启动其他四个活动之一,具体取决于哪个选项。所有活动都在同一个包中,并且都已在AndroidManifest.XML文件中声明

我使用交换机案例确定要运行的活动,如下所示:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menu_add:
        System.out.println("Add");
        Intent intent_add = new Intent(this, NewPlanet.class);
        this.startActivity(intent_add);
        break;
    case R.id.menu_attack:
        System.out.println("Attack");
        Intent intent_attack = new Intent(this, AttackActivity.class);
        this.startActivity(intent_attack);
        break;
    case R.id.menu_config:
        System.out.println("Config");
        Intent intent_config = new Intent(this, ConfigActivity.class);
        this.startActivity(intent_config);
        break;  
    case R.id.menu_travel:
        System.out.println("Travel");
        Intent intent_travel = new Intent(this, TravelActivity.class);
        this.startActivity(intent_travel);
        break;
    default:
        return super.onOptionsItemSelected(item);
    }
    System.out.println("Outside switch.");
    return true;
}
然而,问题是,这只在按下“添加”菜单按钮时起作用,该按钮成功启动并显示NewPlanet活动

但是,所有其他操作都会产生ActivityNotFoundException并强制程序崩溃(在各种虚拟设备组合上以及在我的物理Galaxy Note II设备上的结果相同)

我已经尽了我所能试图解决这个问题,但毫无效果。据我所知,代码与本书中的代码完全相同,但本书已经开始进入下一节,而我的项目还没有开始工作

我有LogCat输出,如果有人想看到,但任何帮助或建议将不胜感激。我在谷歌上搜索了这个问题,但没什么帮助

编辑:根据要求,这是我的清单:(我将其作为高分辨率图像附加,因为我现在无法使用编辑器)

以下是相关的LogCat输出:

07-03 10:42:53.954: E/AndroidRuntime(29754): FATAL EXCEPTION: main
07-03 10:42:53.954: E/AndroidRuntime(29754): android.content.ActivityNotFoundException: Unable to find explicit activity class {chapter.two.hello_world/chapter.two.hello_world.ConfigActivity}; have you declared this activity in your AndroidManifest.xml?
最终编辑:


多亏了用户E.Odebug,我解决了这个问题:我在清单中用错误的名称引用了我的活动(ConfigPlanet而不是ConfigActivity)。我根本没有注意到区别。一个愚蠢的错误,但现在已经纠正了。谢谢大家的帮助

您的清单可能有问题。可能您复制并粘贴了所有活动的相同属性,因此有多个启动器IntentFilter类别。您能同时发布堆栈跟踪和清单吗?

您的清单可能有问题。可能您复制并粘贴了所有活动的相同属性,因此有多个启动器IntentFilter类别。您能同时发布堆栈跟踪和清单吗?

确保所有活动都在AndroidManifest.xml中声明

<manifest ... >
  <application ... >
      <activity android:name="your.packagename.AttackActivity" />
      <activity android:name="your.packagename.ConfigActivity" />
      <activity android:name="your.packagename.TravelActivity" />
      ...
  </application ... >
  ...
</manifest >


确保所有活动都在AndroidManifest.xml中声明

<manifest ... >
  <application ... >
      <activity android:name="your.packagename.AttackActivity" />
      <activity android:name="your.packagename.ConfigActivity" />
      <activity android:name="your.packagename.TravelActivity" />
      ...
  </application ... >
  ...
</manifest >


很明显,您共享的屏幕截图显示您声明了一些ConfigPlanet活动,而在交换机情况下,您正在调用ConfigActivity


将AndroidManifest.xml中的.ConfigPlanet替换为.ConfigActivity,确保在适当的包中有ConfigActivity.java文件。

显然,您共享的屏幕截图显示您已声明了一些ConfigPlanet活动,在交换机的情况下,您正在调用ConfigActivity


将AndroidManifest.xml中的.ConfigPlanet替换为.ConfigActivity,确保您的适当包中确实有一个ConfigActivity.java文件。

您的清单中没有声明
ConfigActivity

不知何故,您在那里为
ConfigPlanet
输入了一个不同的条目。这就是原因。

您的清单中没有声明
ConfigActivity

不知何故,您在那里为
ConfigPlanet
输入了一个不同的条目。所以这就是原因。

您也可以包含您的xml文件吗?您可以发布您的清单文件吗?我已经编辑了主要帖子,以包含LogCat输出,以及我的AndroidManifest.xml的屏幕截图。这是你感兴趣的XML文件吗,btse?你也可以包含你的XML文件吗?你可以发布你的清单文件吗?我已经编辑了主要的帖子,以包含LogCat输出,以及我的AndroidManifest.XML的屏幕截图。这是您感兴趣的XML文件吗,btse?它们的定义都与您在这里所示的完全相同。所有活动都声明为相同的(除了MainActivity,它默认由IDE创建,默认在清单中声明)。其他的在声明中是相同的,但是只有一个是功能性的(没有崩溃)。它们的定义都完全如您在这里所示。所有活动都声明为相同的(除了MainActivity,它默认由IDE创建,默认在清单中声明)。其他的在声明中是相同的,但是只有一个是功能性的(没有崩溃)。除了主活动之外,您是否尝试过添加到每个活动中?我没有尝试过,因为这本书还没有以任何方式提到标记。我现在就去试试,然后回来汇报。谢谢你的建议。我收到一个IDE标记的错误:“元素类型”活动“后面必须跟属性规范“>”或“/>“。我知道我的格式是合理的,因为我直接将它与您的建议以及MainActivity类中其他intent filter标记的格式进行了比较。我知道您的问题所在。”。在清单中,您将活动的名称声明为ConfigPlanet。但是,当您调用intent时,您会说它的名称是ConfigActivity,只需使用一个有效的名称即可!非常感谢你,奥德布格,我真的很感激。就我而言,这是一个多么愚蠢的错误,但衷心感谢您花时间查找并向我指出这一点。除了主要活动之外,您是否尝试过在每个活动中添加内容?我没有尝试过,因为本书还没有以任何方式提及标记。我现在就去试试,然后回来汇报。谢谢你的建议。我收到IDE的一个标记错误:“元素类型”activity“后面必须跟属性specifications“>”或“/>”。我知道我的格式是合理的,因为我直接将它与你的建议以及MainActivity类中其他intent filter标记的格式进行了比较。我看到了你的建议