如何修复 Android studio 中的运行时错误

问题描述 投票:0回答:1

我正在 Android Studio 中开发一个项目,当时我遇到了一个问题,当我尝试在真实设备上运行它时,它不断崩溃。一开始它工作得很好,但是当我使用 viewBinding 时,它停止工作并立即崩溃。

这是我不断收到的运行时错误

2024-04-05 11:11:36.978  9368-9368  AndroidRuntime          usap64                               E  FATAL EXCEPTION: main
                                                                                                    Process: com.example.login_act, PID: 9368
                                                                                                    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.login_act/com.example.login_act.MainActivity}: java.lang.InstantiationException: java.lang.Class<com.example.login_act.MainActivity> cannot be instantiated
                                                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3737)
                                                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4022)
                                                                                                        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
                                                                                                        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:2336)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                        at android.os.Looper.loop(Looper.java:246)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8653)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
                                                                                                    Caused by: java.lang.InstantiationException: java.lang.Class<com.example.login_act.MainActivity> cannot be instantiated
                                                                                                        at java.lang.Class.newInstance(Native Method)
                                                                                                        at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
                                                                                                        at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:44)
                                                                                                        at android.app.Instrumentation.newActivity(Instrumentation.java:1253)
                                                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3725)
                                                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4022) 
                                                                                                        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
                                                                                                        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:2336) 
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:106) 
                                                                                                        at android.os.Looper.loop(Looper.java:246) 
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:8653) 
                                                                                                        at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) 
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) 
2024-04-05 11:11:37.042  4589-4614  WindowManager           system_server                        E  win=Window{3a9cc03 u0 Splash Screen com.example.login_act EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0 caller=com.android.server.wm.ActivityRecord.destroySurfaces:5251 com.android.server.wm.ActivityRecord.destroySurfaces:5232 com.android.server.wm.WindowState.onExitAnimationDone:5654 com.android.server.wm.-$$Lambda$01bPtngJg5AqEoOWfW3rWfV7MH4.accept:2 java.util.ArrayList.forEach:1262 com.android.server.wm.ActivityRecord.onAnimationFinished:7162 com.android.server.wm.WindowContainer.doAnimationFinished:2626 

这是我的MainActivity.kt

abstract class MainActivity : AppCompatActivity() , View.OnClickListener {

    private lateinit var binding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val username = binding.usernameTxt
        val password = binding.passwordTxt
        val login_btn = binding.LoginBtn

        login_btn.setOnClickListener {

        }
        when{
            TextUtils.isEmpty(username.text.toString()) ->{
                Toast.makeText(applicationContext,"Please enter your username", Toast.LENGTH_SHORT).show()
            }
            TextUtils.isEmpty(password.text.toString()) ->{
                Toast.makeText(applicationContext,"Pleas enter your password", Toast.LENGTH_SHORT).show()
            }
            username.toString() != "admin123" && password.toString() != "adminpass123" ->{
                Toast.makeText(applicationContext,"Invalid Username and/or Password", Toast.LENGTH_SHORT).show()
            }
            else ->{
                Toast.makeText(applicationContext,"Logging in....", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

这是我的activity_main.xml

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient_bg"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="199dp"
        android:layout_height="244dp"
        android:layout_marginTop="44dp"
        android:backgroundTint="#2E2727"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/avatar" />

    <EditText
        android:id="@+id/username_Txt"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:layout_marginTop="40dp"
        android:layout_marginEnd="20dp"
        android:backgroundTint="#100A0A"
        android:ems="10"
        android:hint="@string/username"
        android:inputType="text"
        android:minHeight="48dp"
        android:textColor="#000000"
        android:textColorHint="#0B0909"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView" />

    <EditText
        android:id="@+id/password_Txt"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:layout_marginTop="40dp"
        android:layout_marginEnd="20dp"
        android:backgroundTint="#050505"
        android:ems="10"
        android:hint="@string/password"
        android:inputType="textPassword"
        android:minHeight="48dp"
        android:textColor="#000000"
        android:textColorHint="#0B0909"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/username_Txt" />

    <Button
        android:id="@+id/LoginBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:layout_marginTop="40dp"
        android:layout_marginEnd="20dp"
        android:backgroundTint="#DAD8D8"
        android:text="@string/Login_btn"
        android:textColor="#000000"
        android:textSize="20sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/password_Txt" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="20dp"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="20dp"
        android:text="@string/forgot_pass"
        android:textColor="#000000"
        android:textColorHint="#020202"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/LoginBtn" />
</androidx.constraintlayout.widget.ConstraintLayout>
java android android-studio debugging android-viewbinding
1个回答
0
投票

您的

MainActivity
被声明为抽象,因此 Android(以及其他所有人)无法实例化它。

如果您确实需要它是抽象的,请尝试子类化

MainActivity
并在您的
AndroidManifest.xml
中声明子级。给父类起一个不同的名字也很好。

例如 家长:

abstract class BaseActivity: AppCompatActivity() {
 ...
}

孩子:

class MainActivity : BaseActivity() {

}
© www.soinside.com 2019 - 2024. All rights reserved.