Android闪屏后跳转登录页应用崩溃问题求助
闪屏跳转登录页崩溃的排查与解决
常见崩溃原因及解决步骤
- 未注册目标Activity:检查
AndroidManifest.xml,确保SignUpActivity已在<application>标签内注册,示例:<activity android:name=".SignUp" /> - 缺失布局引用资源:布局中用到的
@drawable/splashbackground、@drawable/edittextback、@drawable/baseline_person_24、@drawable/baseline_lock_24必须存在于res/drawable目录下,且格式合法(比如矢量图需确保最低API兼容,图片文件未损坏)。 - Material组件依赖缺失:项目未引入Material Design库会导致
TextInputLayout等组件无法加载,在app/build.gradle的dependencies中添加:implementation 'com.google.android.material:material:1.11.0' // 可根据项目API选择对应版本 - Handler内存泄漏风险优化:原代码中直接使用
Handler()可能导致内存泄漏,建议结合生命周期改进:class MainActivity : AppCompatActivity() { private val handler = Handler(Looper.getMainLooper()) private val runnable = Runnable { startActivity(Intent(this, SignUp::class.java)) finish() } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) handler.postDelayed(runnable, 3000) } override fun onDestroy() { super.onDestroy() handler.removeCallbacks(runnable) // 页面销毁时移除延迟任务 } }
用户提供的代码
注册页面XML(建议命名为activity_sign_up.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" tools:context=".SignUp" android:background="@drawable/splashbackground"> <TextView android:id="@+id/headingTV" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" android:text=" Sign In " android:textSize="40dp" android:padding="5dp" android:layout_marginTop="80dp" android:textColor="@color/white" android:fontFamily="serif" android:background="#469BABC6" /> <com.google.android.material.textfield.TextInputLayout android:id="@+id/editText" android:layout_width="390dp" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="@id/headingTV" app:layout_constraintEnd_toEndOf="@id/headingTV" app:layout_constraintTop_toBottomOf="@id/headingTV" android:layout_marginTop="60dp" > <com.google.android.material.textfield.TextInputEditText android:id="@+id/username" android:layout_width="match_parent" android:layout_height="48dp" android:background="@drawable/edittextback" android:hint="Username" android:textSize="27dp" android:layout_marginStart="25dp" android:layout_marginEnd="25dp" android:paddingStart="10dp" android:padding="5dp" android:fontFamily="serif" android:drawableStart="@drawable/baseline_person_24" android:textColorHint="@color/black" /> </com.google.android.material.textfield.TextInputLayout> <com.google.android.material.textfield.TextInputLayout android:id="@+id/editText1" android:layout_width="390dp" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="@id/editText" app:layout_constraintEnd_toEndOf="@id/editText" app:layout_constraintTop_toBottomOf="@id/editText" android:layout_marginTop="10dp" app:passwordToggleEnabled="true" > <com.google.android.material.textfield.TextInputEditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="48dp" android:background="@drawable/edittextback" android:hint="Password" android:textSize="27dp" android:layout_marginStart="25dp" android:layout_marginEnd="25dp" android:paddingStart="10dp" android:padding="5dp" android:fontFamily="serif" android:drawableStart="@drawable/baseline_lock_24" android:textColorHint="@color/black" /> </com.google.android.material.textfield.TextInputLayout> <Button android:id="@+id/sign" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintTop_toBottomOf="@id/editText1" app:layout_constraintEnd_toEndOf="@id/editText1" app:layout_constraintStart_toStartOf="@id/editText1" android:layout_marginTop="60dp" android:text="Sign In" android:textColor="@color/black" android:textSize="25dp" android:fontFamily="serif" android:elevation="150dp" android:paddingStart="10dp" android:paddingEnd="10dp" android:background="@drawable/edittextback" android:backgroundTint="?attr/selectableItemBackground" /> <TextView android:id="@+id/signup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sign Up" app:layout_constraintStart_toStartOf="@id/sign" app:layout_constraintEnd_toEndOf="@id/sign" app:layout_constraintTop_toBottomOf="@id/sign" android:textColor="@color/white" android:textStyle="bold" android:layout_marginTop="15dp"/> </androidx.constraintlayout.widget.ConstraintLayout>
闪屏页MainActivity.kt
package com.example.disneyloginpage import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.Handler class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) Handler().postDelayed({ var intent=Intent(this,SignUp::class.java) startActivity(intent) finish() },3000) } }
内容的提问来源于stack exchange,提问作者user18253054
相关产品推荐
相关产品推荐

