前提・実現したいこと
AndroidStudioで、Fragmentの挙動を勉強するためのアプリを作っています。
ですが、AVDで動作確認をしようとする際に、「MainActivityがないよ」という旨の
ClassNotFoundExceptionが発生してしまいます。
発生している問題・エラーメッセージ
01-13 23:17:30.605 13912-13912/com.audoc314159.androidaurum E/AndroidRuntime: FATAL EXCEPTION: main Process: com.audoc314159.androidaurum, PID: 13912 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.audoc314159.androidaurum/com.audoc314159.androidaurum.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.audoc314159.androidaurum.MainActivity" on path: DexPathList[[zip file "/data/app/com.audoc314159.androidaurum-2/base.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_8_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]] . . . Caused by: java.lang.ClassNotFoundException: Didn't find class "com.audoc314159.androidaurum.MainActivity" on path: DexPathList[[zip file "/data/app/com.audoc314159.androidaurum-2/base.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_8_apk.apk", zip file "/data/app/com.audoc314159.androidaurum-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at android.app.Instrumentation.newActivity(Instrumentation.java:1066) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Suppressed: java.io.IOException: Zip archive '/data/app/com.audoc314159.androidaurum-2/split_lib_slice_2_apk.apk' doesn't contain classes.dex (error msg: Entry not found) at dalvik.system.DexFile.openDexFileNative(Native Method) at dalvik.system.DexFile.openDexFile(DexFile.java:295) at dalvik.system.DexFile.<init>(DexFile.java:80) at dalvik.system.DexFile.<init>(DexFile.java:59) at dalvik.system.DexPathList.loadDexFile(DexPathList.java:262) at dalvik.system.DexPathList.makeDexElements(DexPathList.java:231) at dalvik.syst
作成したクラス内でエラーが発生しているわけではなく、
かつコンパイルとビルド自体は成功するため文法等の問題ではないような気がしているのですが、原因が全くつかめていません。
よく見るとMainActivityクラスのクラス名に黄色いハイライトがかかっているのに気づきました。
Warningの内容は
The <activity> MainActivity is not registered in the manifest
Activities, services and content providers should be registered in the AndroidManifest.xml file using <activity>, <service> and <provider> tags. If your activity is simply a parent class intended to be subclassed by other "real" activities, make it an abstract class. Issue id: Registered
と出ていたのでマニフェスト関連のエラーかもしれません。
以下AndroidManifestとMainActivity.ktとactivity_main.xmlです。
該当のソースコード
Manifest
1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.audoc314159.androidaurum"> 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:roundIcon="@mipmap/ic_launcher_round" 10 android:supportsRtl="true" 11 android:theme="@style/AppTheme"> 12 <activity android:name="MainActivity"> 13 <intent-filter> 14 <action android:name="android.intent.action.MAIN"/> 15 <category android:name="android.intent.category.LAUNCHER"/> 16 </intent-filter> 17 </activity> 18 </application> 19 20</manifest>
Kotlin
1import android.support.v7.app.AppCompatActivity 2import android.os.Bundle 3import com.audoc314159.androidaurum.R 4import com.audoc314159.androidaurum.R.layout.activity_main 5 6class MainActivity : AppCompatActivity() { 7 8 override fun onCreate(savedInstanceState: Bundle?) { 9 super.onCreate(savedInstanceState) 10 setContentView(activity_main) 11 12 //初期表示?? 13 if (savedInstanceState == null) { 14 15 // fragmentManagerのインスタンス生成 16 val fragmentManager = supportFragmentManager 17 // FragmentTransactionのインスタンスを取得 18 val fragmentTransaction = fragmentManager.beginTransaction() 19 20 // BackStackを設定 21 //これをトランザクションに設定すると、トランザクションの開始時のFragment状態がスタックに積まれて、 22 //戻るボタンで前の状態に戻ることが可能になる。 23 fragmentTransaction.addToBackStack(null) 24 25 // インスタンスに対して張り付け方を指定する 26 //引数で、Fragmentに使わせたいものを渡す 27 //遷移先指定 28 fragmentTransaction.replace(R.id.id_fl_intro, IntroFragment.newInstance("")) 29 30 /* 31 add(int containerViewId, Fragment fragment) 32 add(int containerViewId, Fragment fragment, String tag) 33 remove(Fragment fragment) 34 35 置き換え、remove()してadd()すること 36 replace(int containerViewId, Fragment fragment) 37 replace(int containerViewId, Fragment fragment, String tag) 38 39 Fragmentを非表示にする 40 hide(Fragment fragment) 41 42 hideされたものを表示させる 43 show(Fragment fragment) 44 45 UIからは外れるがFragmentMangerでactiveな状態として管理されている 46 detach(Fragment fragment) 47 48 detachされたものをattachする 49 attach(Fragment fragment) 50 */ 51 52 // 張り付けを実行 53 fragmentTransaction.commit() 54 } 55 } 56}
xml
1<?xml version="1.0" encoding="utf-8"?> 2<android.support.constraint.ConstraintLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context="MainActivity" tools:layout_editor_absoluteY="81dp"> 8 9 <FrameLayout 10 android:layout_width="match_parent" 11 android:layout_height="match_parent" android:id="@+id/id_fl_intro"> 12 13 </FrameLayout> 14 <LinearLayout 15 android:orientation="vertical" 16 android:layout_width="match_parent" 17 android:layout_height="match_parent" android:id="@+id/id_ll_main"> 18 <FrameLayout 19 android:layout_width="match_parent" 20 android:layout_height="262dp" android:id="@+id/id_fl_battle"> 21 22 </FrameLayout> 23 <FrameLayout 24 android:layout_width="match_parent" 25 android:layout_height="161dp" android:id="@+id/id_fl_message"> 26 27 </FrameLayout> 28 <FrameLayout 29 android:layout_width="match_parent" 30 android:layout_height="match_parent" android:id="@+id/id_fl_buttons"> 31 32 </FrameLayout> 33 </LinearLayout> 34</android.support.constraint.ConstraintLayout> 35 36
試したこと
- プロジェクトのクリーン、リビルド
- 「./.gradle」「./app/build」「./build」以下のファイルの削除、リビルド
- レイアウト系xmlで赤文字になっていた箇所は全て修正し、見た目はエラーがない状態に
補足情報(FW/ツールのバージョンなど)
- AndroidStudio 3.2.1
- kotlin_version '1.2.71'
初心者かつ質問させていただくのが初めての為、情報が足りなかったら申し訳ありませんが、
何卒よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー