【发布时间】:2021-03-20 22:26:47
【问题描述】:
我正在关注这个 youtube 教程 (https://www.youtube.com/watch?v=0hkyXuKTFYY),但发生了以下情况。对于视频中的他来说,在 6 点 30 分,他的应用程序也崩溃了,但他在视频中稍后解决了这个问题。对我来说,似乎没有任何效果。
请帮忙!
这是我的日志:
12-09 19:36:45.321 28337-28337/? E/Zygote: v2
12-09 19:36:45.331 28337-28337/? E/Zygote: accessInfo : 0
12-09 19:36:47.831 28337-28337/konark.studios.ourtimetable E/AndroidRuntime: FATAL EXCEPTION: main
Process: konark.studios.ourtimetable, PID: 28337
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{konark.studios.ourtimetable/konark.studios.ourtimetable.RegisterActivity}: 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:3132)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
at android.app.ActivityThread.access$1100(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
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:162)
at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:109)
at android.content.Context.obtainStyledAttributes(Context.java:514)
at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:839)
at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:806)
at androidx.appcompat.app.AppCompatDelegateImpl.findViewById(AppCompatDelegateImpl.java:630)
at androidx.appcompat.app.AppCompatActivity.findViewById(AppCompatActivity.java:223)
at konark.studios.ourtimetable.RegisterActivity.<init>(RegisterActivity.kt:20)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1096)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3122)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
at android.app.ActivityThread.access$1100(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
第一个 Activity 照常打开:## Heading ## enter image description here
当我按下创建帐户按钮(在底部)时,它应该移动到第二个活动。但不幸的是,它崩溃了。
第二个活动的代码(即崩溃):
package konark.studios.ourtimetable
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.Patterns
import android.view.WindowManager
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.ktx.auth
import com.google.firebase.ktx.Firebase
class RegisterActivity : AppCompatActivity() {
var registerBtn = findViewById<Button>(R.id.RegisterButton)
var usernamebox = findViewById<EditText>(R.id.emailbox)
var passwordbox = findViewById<EditText>(R.id.passwordbox)
val intentLoginActivity = Intent(this, LoginActivity::class.java)
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN)
setContentView(R.layout.activity_register)
supportActionBar?.hide();
auth = Firebase.auth
registerBtn.setOnClickListener {
signUpUser()
}
}
private fun signUpUser() {
if (usernamebox.text.toString().isEmpty()) {
usernamebox.error = "Please enter your email"
usernamebox.requestFocus()
return
}
if (Patterns.EMAIL_ADDRESS.matcher(usernamebox.text.toString()).matches()) {
usernamebox.error = "Please enter a valid email"
usernamebox.requestFocus()
return
}
if (passwordbox.text.toString().isEmpty()) {
passwordbox.error = "Please enter a password"
passwordbox.requestFocus()
return
}
auth.createUserWithEmailAndPassword(usernamebox.text.toString(), passwordbox.text.toString())
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
startActivity(Intent(intentLoginActivity))
} else {
Toast.makeText(baseContext, "Authentication failed",
Toast.LENGTH_SHORT).show()
}
}
}
}
这是第一个作为主屏幕的活动的代码:
package konark.studios.ourtimetable
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.provider.AlarmClock.EXTRA_MESSAGE
import android.util.Log
import android.view.Window
import android.view.WindowManager
import android.widget.Button
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseUser
import com.google.firebase.auth.ktx.auth
import com.google.firebase.ktx.Firebase
class LoginActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN)
setContentView(R.layout.activity_login)
supportActionBar?.hide();
auth = Firebase.auth
var createAccountBtn = findViewById<Button>(R.id.AccountCreation)
val intentAccountCreate = Intent(this, RegisterActivity::class.java)
createAccountBtn.setOnClickListener {
Log.d("Action","Register Button Clicked")
startActivity(intentAccountCreate)
finish()
}
}
public override fun onStart() {
super.onStart()
// Check if user is signed in (non-null) and update UI accordingly.
val currentUser = auth.currentUser
updateUI(currentUser)
}
private fun updateUI(currentUser: FirebaseUser?) {
}
}
【问题讨论】: