Androidのエラーでandroid.content.ActivityNotFoundExceptionに遭遇した際の確認箇所
AndroidアプリのIntentを使った画面遷移で、android.content.ActivityNotFoundException
に何度か遭遇し、解決方法に辿り着くまでに時間を要する場合があったため書き留めておきます。
目次
AndroidManifest.xmlの記述を確認する
エラーメッセージの最後の方に記述されているように、AndroidManifest.xml
の<activity>
要素に、作成したActivityを追加し忘れていると遭遇するようです。
AndroidManifest.xml
への記述忘れが原因の場合*1は、<application>
要素の中に表示したいActivity*2の<activity>
要素を記述すると解決しました。
<?xml version="1.0" encoding="utf-8"?> ・ ・ ・ <application ・ ・ ・ <activity android:name=".MainActivity"> ・ ・ ・ </activity> <activity android:name=".SubActivity"> </activity> </application> </manifest>
パッケージ名を確認する
何かの拍子にパッケージ名を中途半端に変更してしまい、プロジェクトで定義されている名前空間に齟齬が生じると遭遇*3するようです。
package com.example.sampleapp
パッケージ名の誤りが原因の場合は、アプリケーション名やプロジェクトディレクトリの名前がSampleApp
で、パッケージ名もcom.example.sampleapp
が正しいにもかかわらず、パッケージ名やソースコードが格納されているディレクトリの名前がcom.example.sample
のように間違っている部分を修正すると解決しました。
Listenerのimportを確認する
ListView
やGridView
等のViewGroupで利用するAdapterView.OnItemClickListener
を、import android.widget.AdapterView.OnItemClickListener
のように詳細にimport
してnew OnItemClickListener()
で使おうとすると遭遇する場合がある*4ようです。
new AdapterView.OnItemClickListener()
パッケージのimport
をimport android.widget.AdapterView
に変更して、Listener
をnew AdapterView.OnItemClickListener()
で使うと解決しました。
参考記事
android.tecc0.com goo.gl stackoverflow.com