whenever I try to open the app it keeps stopping. This issue also comes in many other project also.
Here is my MainActivity.kt
file
package com.shahid.timerlivedata
import android.annotation.SuppressLint
import android.os.Bundle
import android.widget.TextView
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
class MainActivity : AppCompatActivity() {
@SuppressLint("MissingInflatedId")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
val TxtCount = findViewById<TextView>(R.id.txtCount)
val edtCount = findViewById<TextView>(R.id.edtCount)
val btnStart = findViewById<TextView>(R.id.btnStart)
val btnStop = findViewById<TextView>(R.id.btnStop)
val mAVieModel = ViewModelProvider(this).get(MainActivityViewModel::class.java)
mAVieModel.startTimer()
mAVieModel._seconds.observe(this, Observer{ seconds ->
TxtCount.text = "$seconds"
})
mAVieModel.finished.observe(this, Observer { check ->
if(check){
Toast.makeText(this,"Time Completed!!", Toast.LENGTH_LONG).show()
}
})
btnStart.setOnClickListener{
if(edtCount.text.isEmpty()){
Toast.makeText(this,"Please Fill the Time", Toast.LENGTH_LONG).show()
}else{
mAVieModel.timerValue.value = edtCount.text.toString().toLong()*1000
mAVieModel.startTimer()
}
}
btnStop.setOnClickListener{
mAVieModel.stopTimer()
}
}
}
Here is my LogCat
. I think the Actual Problem is here, but I can’t get it ->
[871] amjc.a(209): VerifyApps: APK Analysis scan failed for com.shahid.timerlivedata (Ask Gemini)
com.google.android.finsky.verifier.apkanalysis.client.ApkAnalysisException: DOWNLOAD_FILE_NOT_FOUND_EXCEPTION while analyzing APK
at ambw.b(PG:1260)
at ambw.a(PG:13)
at bgbs.M(PG:14)
at bgbs.d(PG:10)
at algz.b(PG:605)
at algz.a(PG:222)
at bfwu.J(PG:40)
at bfwu.C(PG:12)
at amjc.a(PG:113)
at algz.b(PG:632)
at bfvd.x(PG:6)
at bgcb.run(PG:111)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at qek.run(PG:1211)
at java.lang.Thread.run(Thread.java:761)
Package still installed com.shahid.timerlivedata
Late-enabling -Xcheck:jni
Unexpected CPU variant for X86 using defaults: x86
ClassLoader referenced unknown path: /data/app/com.shahid.timerlivedata-1/lib/x86
Background sticky concurrent mark sweep GC freed 21607(876KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 4MB/8MB, paused 6.612ms total 210.244ms
Checking for metadata for AppLocalesMetadataHolderService : Service not found
Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
Shutting down VM
FATAL EXCEPTION: main (Ask Gemini)
Process: com.shahid.timerlivedata, PID: 14609
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.shahid.timerlivedata/com.shahid.timerlivedata.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.NullPointerException
at com.shahid.timerlivedata.MainActivityViewModel.startTimer(MainActivityViewModel.kt:24)
at com.shahid.timerlivedata.MainActivity.onCreate(MainActivity.kt:32)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Debugger is no longer active
Starting a blocking GC Instrumentation
Here is my activity_main.kt
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/txtCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textSize="34sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.155" />
<EditText
android:id="@+id/edtCount"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_marginTop="52dp"
android:ems="10"
android:hint="Enter timer in sec."
android:inputType="text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtCount" />
<Button
android:id="@+id/btnStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="212dp"
android:text="Start"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edtCount" />
<Button
android:id="@+id/btnStop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="44dp"
android:text="Stop"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnStart" />
</androidx.constraintlayout.widget.ConstraintLayout>
Here is another the ViewModel.kt
package com.shahid.timerlivedata
import android.os.CountDownTimer
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class MainActivityViewModel : ViewModel() {
lateinit var timer : CountDownTimer
private var remaining_seconds = MutableLiveData<Int>()
private var _finished = MutableLiveData<Boolean>()
val finished : LiveData<Boolean>
get() = _finished
val _seconds : LiveData <Int>
get() = remaining_seconds
var timerValue = MutableLiveData<Long>()
fun startTimer(){
timer = object : CountDownTimer(timerValue.value!!.toLong(),1000) {
override fun onTick(millisUntilFinished: Long) {
val remainingTime = millisUntilFinished/1000
remaining_seconds.value = remainingTime.toInt()
}
override fun onFinish() {
_finished.value = true
}
}
}
fun stopTimer (){
timer.cancel()
}
}
1