Home > other >  Android Studio (Kotlin): Cannot start an activity
Android Studio (Kotlin): Cannot start an activity

Time:06-09

I have been following a tutorial from Udemy called The Complete Android 12 & Kotlin Development Masterclass. I was working on the quiz app part and tried to start a new activity, at which point the app fails.

Even though I tried to copy the code exactly from the reference, I am still getting a fatal error at the main, caused by android.view.InflateException, android.content.res.Resources$NotFoundException, and java.lang.ClassNotFoundException. Below is the complete error message.

The reference Github link: https://github.com/tutorialseu/QuizApp/tree/setting_up_the_question_ui


06/08 10:31:17: Launching 'app' on Pixel 3 API 29.
App restart successful without requiring a re-install.
$ adb shell am start -n "com.example.quizpractice/com.example.quizpractice.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Waiting for application to come online: com.example.quizpractice
Connected to process 23388 on device 'Pixel_3_API_29 [emulator-5554]'.
Connecting to com.example.quizpractice
Connected to the target VM, address: 'localhost:49759', transport: 'socket'
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
I/le.quizpractic: Late-enabling -Xcheck:jni
E/le.quizpractic: Unknown bits set in runtime_flags: 0x8000
W/le.quizpractic: Unexpected CPU variant for X86 using defaults: x86
W/ActivityThread: Application com.example.quizpractice is waiting for the debugger on port 8100...
I/System.out: Sending WAIT chunk
I/System.out: Debugger has connected
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/chatty: uid=10138(com.example.quizpractice) identical 2 lines
I/System.out: waiting for debugger to settle...
I/System.out: waiting for debugger to settle...
I/System.out: debugger has settled (1399)
D/libEGL: Emulator has host GPU support, qemu.gles is set to 1.
W/libc: Unable to set property "qemu.gles" to "1": connection failed; errno=13 (Permission denied)
W/RenderThread: type=1400 audit(0.0:1831): avc: denied { write } for name="property_service" dev="tmpfs" ino=7013 scontext=u:r:untrusted_app:s0:c138,c256,c512,c768 tcontext=u:object_r:property_socket:s0 tclass=sock_file permissive=0
D/libEGL: loaded /vendor/lib/egl/libEGL_emulation.so
D/libEGL: loaded /vendor/lib/egl/libGLESv1_CM_emulation.so
D/libEGL: loaded /vendor/lib/egl/libGLESv2_emulation.so
W/le.quizpractic: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
W/le.quizpractic: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
D/HostConnection: HostConnection::get() New Host Connection established 0xe14dc990, tid 23432
D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_null_optional_strings ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_vulkan_free_memory_sync ANDROID_EMU_vulkan_shader_float16_int8 ANDROID_EMU_vulkan_async_queue_submit ANDROID_EMU_sync_buffer_data GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_2 
W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 0 0
D/EGL_emulation: eglCreateContext: 0xe14d46c0: maj 2 min 0 rcv 2
D/EGL_emulation: eglMakeCurrent: 0xe14d46c0: ver 2 0 (tinfo 0xe143d640)
W/Gralloc3: mapper 3.x is not supported
D/HostConnection: createUnique: call
D/HostConnection: HostConnection::get() New Host Connection established 0xe14dcd00, tid 23432
D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_null_optional_strings ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_vulkan_free_memory_sync ANDROID_EMU_vulkan_shader_float16_int8 ANDROID_EMU_vulkan_async_queue_submit ANDROID_EMU_sync_buffer_data GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_2 
D/eglCodecCommon: allocate: Ask for block of size 0x1000
D/eglCodecCommon: allocate: ioctl allocate returned offset 0x3ffff4000 size 0x2000
D/EGL_emulation: eglMakeCurrent: 0xe14d46c0: ver 2 0 (tinfo 0xe143d640)
D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 1 0
I/AssistStructure: Flattened final assist data: 1856 bytes, containing 1 windows, 11 views
W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@9c89778
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.quizpractice, PID: 23388
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.quizpractice/com.example.quizpractice.QuizQuestionsActivity}: android.view.InflateException: Binary XML file line #66 in com.example.quizpractice:layout/activity_quiz_questions: Binary XML file line #66 in com.example.quizpractice:layout/activity_quiz_questions: Error inflating class TextView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: android.view.InflateException: Binary XML file line #66 in com.example.quizpractice:layout/activity_quiz_questions: Binary XML file line #66 in com.example.quizpractice:layout/activity_quiz_questions: Error inflating class TextView
     Caused by: android.view.InflateException: Binary XML file line #66 in com.example.quizpractice:layout/activity_quiz_questions: Error inflating class TextView
     Caused by: android.content.res.Resources$NotFoundException: Drawable com.example.quizpractice:drawable/default_option_border_bg with resource ID #0x7f070060
     Caused by: android.content.res.Resources$NotFoundException: File res/drawable/default_option_border_bg.xml from drawable resource ID #0x7f070060
        at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:876)
        at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:659)
        at android.content.res.Resources.loadDrawable(Resources.java:916)
        at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:1005)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:980)
        at android.view.View.<init>(View.java:5254)
        at android.widget.TextView.<init>(TextView.java:974)
        at android.widget.TextView.<init>(TextView.java:968)
        at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:108)
        at com.google.android.material.textview.MaterialTextView.<init>(MaterialTextView.java:93)
        at com.google.android.material.textview.MaterialTextView.<init>(MaterialTextView.java:88)
        at com.google.android.material.textview.MaterialTextView.<init>(MaterialTextView.java:83)
        at com.google.android.material.theme.MaterialComponentsViewInflater.createTextView(MaterialComponentsViewInflater.java:61)
        at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:121)
        at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1566)
        at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1617)
        at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1061)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:997)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1126)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:481)
E/AndroidRuntime:     at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:706)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:195)
        at com.example.quizpractice.QuizQuestionsActivity.onCreate(QuizQuestionsActivity.kt:25)
        at android.app.Activity.performCreate(Activity.java:7802)
        at android.app.Activity.performCreate(Activity.java:7791)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: android.view.InflateException: Class not found Shape
        at android.graphics.drawable.DrawableInflater.inflateFromClass(DrawableInflater.java:224)
        at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:141)
        at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1402)
        at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1361)
        at android.content.res.ResourcesImpl.loadXmlDrawable(ResourcesImpl.java:939)
        at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:862)
            ... 43 more
     Caused by: java.lang.ClassNotFoundException: Didn't find class "Shape" on path: DexPathList[[zip file "/data/app/com.example.quizpractice-znPuhtO6Ye_1toCnCDofwg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.quizpractice-znPuhtO6Ye_1toCnCDofwg==/lib/x86, /system/lib, /system/product/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.graphics.drawable.DrawableInflater.inflateFromClass(DrawableInflater.java:205)
            ... 48 more
Disconnected from the target VM, address: 'localhost:49759', transport: 'socket'

Here is the code for the main activity, the main activity XML, the second activity, the second activity XML, a supplementary XML, and the android manifest XML.

(The main activity)

package com.example.quizpractice

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatEditText
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val btnStart : Button = findViewById(R.id.btn_start)
        val etName: EditText = findViewById(R.id.et_name)

        btnStart.setOnClickListener {
            if (etName.text.toString().isEmpty()) {
                Toast.makeText(this,
                    "Please enter your name.", Toast.LENGTH_LONG).show()
            }
            else {
                val intent = Intent(this, QuizQuestionsActivity::class.java)
                startActivity(intent)
            }
        }
    }
}

(The main activity XML)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:background="@drawable/ic_bg"
    tools:context=".MainActivity">

    <TextView
        android:id="@ id/tv_app_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Quiz App"
        android:layout_marginBottom="30dp"
        android:textSize="25sp"
        android:textStyle="bold"
        android:textColor="@android:color/white"
        android:gravity="center" />

    <com.google.android.material.card.MaterialCardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/Theme.MaterialComponents.Light"
        android:layout_marginStart="20dp"
        android:layout_marginEnd="20dp"
        android:background="@android:color/white"
        app:cardCornerRadius="8dp"
        app:cardElevation="5dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="16dp">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Welcome!"
                android:textColor="#363A43"
                android:textSize="30sp"
                android:textStyle="bold"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Please enter your name."
                android:textColor="#7A8089"
                android:textSize="16sp"/>

            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

                <androidx.appcompat.widget.AppCompatEditText
                    android:id="@ id/et_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="Name"
                    android:inputType="textCapWords"
                    android:textColor="#363A43"
                    android:textColorHint="#7A8089"/>

            </com.google.android.material.textfield.TextInputLayout>

            <Button
                android:id="@ id/btn_start"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:background="@color/purple_200"
                android:text="Start"
                android:textSize="18sp"
                android:textColor="@android:color/white">
            </Button>

        </LinearLayout>

    </com.google.android.material.card.MaterialCardView>

</LinearLayout>

(The second activity)

package com.example.quizpractice

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.ImageView
import android.widget.ProgressBar
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_quiz_questions.*

class QuizQuestionsActivity : AppCompatActivity() {

    private var progressBar: ProgressBar? = null
    private var tvProgress: TextView? = null
    private var tvQuestion: TextView? = null
    private var ivImage: ImageView? = null

    private var tvOptionOne: TextView? = null
    private var tvOptionTwo: TextView? = null
    private var tvOptionThree: TextView? = null
    private var tvOptionFour: TextView? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_quiz_questions)

        progressBar = findViewById(R.id.pb_progressBar)
        tvProgress = findViewById(R.id.tv_progress)
        tvQuestion = findViewById(R.id.tv_question)
        ivImage = findViewById(R.id.iv_image)

        tvOptionOne = findViewById(R.id.tv_optionOne)
        tvOptionTwo = findViewById(R.id.tv_optionTwo)
        tvOptionThree = findViewById(R.id.tv_optionThree)
        tvOptionFour = findViewById(R.id.tv_optionFour)

        val questionsList = Constants.getQuestions()
        Log.i("QuestionsList size is", "${questionsList.size}")

        for (i in questionsList) {
            Log.e("Questions", i.question)
        }
    }
}

(The second activity XML)

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    tools:context=".QuizQuestionsActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical"
        android:padding="16dp">

        <TextView
            android:id="@ id/tv_question"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:gravity="center"
            android:textSize="22sp"
            android:textColor="#363A43"
            tools:text="What country does this flag belong to?"/>

        <ImageView
            android:id="@ id/iv_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:contentDescription="Quiz Image"
            tools:src="@drawable/ic_flag_of_germany"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:layout_marginTop="16dp"
            android:orientation="horizontal">

            <ProgressBar
                android:id="@ id/pb_progressBar"
                android:layout_width="0dp"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:max="10"
                android:indeterminate="false"
                android:minHeight="50dp"
                android:progress="0"/>

            <TextView
                android:id="@ id/tv_progress"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:textColorHint="#7A8089"
                android:padding="15dp"
                android:textSize="14sp"
                tools:text="0/10"
                />

        </LinearLayout>

        <TextView
            android:id="@ id/tv_optionOne"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:background="@drawable/default_option_border_bg"
            android:gravity="center"
            android:padding="15dp"
            android:textColor="#7A8089"
            android:textSize="18sp"
            tools:text="Apple"/>

        <TextView
            android:id="@ id/tv_optionTwo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:background="@drawable/default_option_border_bg"
            android:gravity="center"
            android:padding="15dp"
            android:textColor="#7A8089"
            android:textSize="18sp"
            tools:text="Apple"/>

        <TextView
            android:id="@ id/tv_optionThree"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:background="@drawable/default_option_border_bg"
            android:gravity="center"
            android:padding="15dp"
            android:textColor="#7A8089"
            android:textSize="18sp"
            tools:text="Apple"/>

        <TextView
            android:id="@ id/tv_optionFour"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:background="@drawable/default_option_border_bg"
            android:gravity="center"
            android:padding="15dp"
            android:textColor="#7A8089"
            android:textSize="18sp"
            tools:text="Apple"/>

        <Button
            android:id="@ id/btn_submit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:background="@color/design_default_color_primary"
            android:text="Submit"
            android:textColor="@android:color/white"
            android:textSize="18sp"
            android:textStyle="bold"/>

    </LinearLayout>

</ScrollView>

(A supplementary XML)

<?xml version="1.0" encoding="utf-8"?>
<Shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <stroke
        android:width="1dp"
        android:color="#E8E8E8"/>

    <solid android:color="@android:color/white"/>

    <corners android:radius="5dp"/>

</Shape>

(Android Manifest XML)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.quizpractice">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.QuizPractice">
        <activity
            android:name=".QuizQuestionsActivity"
            android:exported="true"
            android:screenOrientation="portrait" />
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@style/NoActionBarTheme"
            android:windowSoftInputMode="adjustResize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Any help will be appreciated.

CodePudding user response:

Use the following xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">

   <stroke
      android:width="1dp"
      android:color="#E8E8E8"/>

   <solid android:color="@android:color/white"/>

   <corners android:radius="5dp"/>

</shape>

You have written "Shape" instead of "shape".

  • Related