我的应用程序在添加了firebase身份验证后,在启动它时崩溃(基本上是使用firebase代码的任何活动)。
这是逻辑猫
2022-07-14 20:17:21.538 15482-15482/com.example.flimer E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.flimer, PID: 15482
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.flimer/com.example.flimer.SignUp}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3086)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3318)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:113)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:71)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2044)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:226)
at android.app.ActivityThread.main(ActivityThread.java:7212)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:956)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:170)
at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:157)
at android.content.Context.obtainStyledAttributes(Context.java:682)
at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:848)
at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:815)
at androidx.appcompat.app.AppCompatDelegateImpl.findViewById(AppCompatDelegateImpl.java:640)
at androidx.appcompat.app.AppCompatActivity.findViewById(AppCompatActivity.java:259)
at com.example.flimer.SignUp.<init>(SignUp.kt:15)
at java.lang.Class.newInstance(Native Method)
at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69)
at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45)
at android.app.Instrumentation.newActivity(Instrumentation.java:1215)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3074)这是启动屏幕的代码。
class Startscreen : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_startscreen)
auth = Firebase.auth
val user = auth.currentUser
if (Build.VERSION.SDK_INT < 16) {
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN)
}
if (user != null){
Handler().postDelayed({
val intent = Intent(this@Startscreen, MainActivity::class.java)
startActivity(intent)
finish()
}, 2000)
}else{
Handler().postDelayed({
val intent = Intent(this@Startscreen, SignUp::class.java)
startActivity(intent)
finish()
},2000)
}
}这是我开始注册时屏幕上发生的崩溃。
class SignUp : AppCompatActivity() {
private lateinit var etEmail: String
private lateinit var etPass: String
private lateinit var etPass2: String
private lateinit var btn: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sign_up)
etEmail = findViewById<EditText>(R.id.et_email).text.toString().trim { it <= ' ' }
etPass = findViewById<EditText>(R.id.pass).text.toString().trim { it <= ' ' }
etPass2 = findViewById<EditText>(R.id.et_pass2).text.toString().trim { it <= ' ' }
btn = findViewById(R.id.btn_create)
btn.setOnClickListener {
dialog()
if (isValid(etEmail, etPass, etPass2)){
signUp(etEmail, etPass)
}
}
}
private fun isValid(email: String, pass: String,pass2: String ): Boolean{
return if (email.isEmpty() && pass.isEmpty()){
Toast.makeText(this@SignUp, "Fill in the blanks", Toast.LENGTH_SHORT).show()
false
}else if(pass != pass2){
Toast.makeText(this@SignUp, "Passwords do not match", Toast.LENGTH_SHORT).show()
false
}else{
true
}
}
private fun signUp(email: String, pass: String){
var auth: FirebaseAuth = Firebase.auth
auth.createUserWithEmailAndPassword(email,pass).addOnCompleteListener {
dismiss()
if (it.isSuccessful){
Toast.makeText(this@SignUp, "Success",Toast.LENGTH_SHORT ).show()
}else{
Toast.makeText(this@SignUp, it.exception!!.message, Toast.LENGTH_SHORT).show()
}
}
}
private fun dialog(){
val dialog = Dialog(this)
dialog.setContentView(R.layout.custom_dialog)
dialog.show()
}
private fun dismiss(){
Dialog(this).dismiss()
}
}发布于 2022-07-15 02:59:18
初始化auth变量的步骤如下
auth = FirebaseAuth.getInstance()而不是你在做什么
auth = Firebase.authhttps://stackoverflow.com/questions/72984423
复制相似问题