我只是通过教科书学习使用 Android (Learn Android App Development by Jackson)。目前,我有一个 MainActivity 类。我将 Intents 添加到此活动的菜单中,以根据哪个选项启动其他四个活动之一。所有活动都在同一个包中,并且都已在 AndroidManifest.XML 文件中声明。
我正在确定使用 Switch 案例运行哪个活动,如下所示:
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 输出,但任何帮助或建议将不胜感激。我用谷歌搜索了这个问题,但没有多大帮助。
编辑:根据要求,这是我的清单:(我将其附加为高分辨率图像,因为我现在遇到了编辑问题)
http://i.imgur.com/c7wJ8bM.png
这是相关的 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. Odebugg,我已经解决了这个问题:我在清单中用不正确的名称(ConfigPlanet 而不是 ConfigActivity)引用了我的活动。我根本没有注意到差异。一个愚蠢的错误,但现在已修复。谢谢大家的帮助!