教科書 (ジャクソンによる Android アプリ開発の学習) を通じて Android の操作を学んでいます。現時点では、MainActivity クラスがあります。このアクティビティのメニューにインテントを追加して、オプションに応じて他の 4 つのアクティビティのいずれかを起動します。すべてのアクティビティは同じパッケージにあり、すべて 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 のおかげでこの問題を解決しました。私は単に違いに気づきませんでした。ばかげた間違いですが、現在は修正されています。皆さん、助けてくれてありがとう!