Database reference kept crashing my activity that Unable to start activity ComponentInfo... here the complete code of my main activity The app crashes the moment the activity begins and i can't find any error...
the log cat shows the problem is from where i call valuEventlistener for thee database reference
class MainActivity : AppCompatActivity() {
private lateinit var chatFragment : ChatFragment
private lateinit var friendsFragment: FriendsFragment
private lateinit var requestFragment: RequestFragment
private var reference: DatabaseReference? = null
private var firebaseUser: FirebaseUser? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(layout.activity_main)
firebaseUser = FirebaseAuth.getInstance().currentUser
if (firebaseUser != null) {
reference = FirebaseDatabase.getInstance().reference.child("Users")
.child(firebaseUser!!.uid)
}
//this where the problem is from the logcat
reference!!.addValueEventListener(object : ValueEventListener{
override fun onDataChange(dataSnapshot: DataSnapshot) {
if (dataSnapshot.exists()){
val user :UsersModel? = dataSnapshot.getValue(UsersModel::class.java)
name.text = user!!.name
val photo = user.profilePhoto!!
if (photo != "default") {
Picasso.get().load(photo).placeholder(drawable.avatar)
.into(picture)
}else
picture.setImageResource(R.drawable.avatar)
}
}
override fun onCancelled(p0: DatabaseError) {
}
})
val bottomNav : BottomNavigationView = findViewById(R.id.bottomNavigation)
chatFragment = ChatFragment()
supportFragmentManager.beginTransaction()
.replace(id.frame_layout, chatFragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
bottomNav.setOnNavigationItemSelectedListener { item ->
when(item.itemId){
id.chat -> {
val chatFragment = ChatFragment()
supportFragmentManager.beginTransaction()
.replace(id.frame_layout, chatFragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
}
id.friends -> {
friendsFragment =
FriendsFragment()
supportFragmentManager.beginTransaction()
.replace(id.frame_layout, friendsFragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
}
id.request -> {
requestFragment= RequestFragment()
supportFragmentManager.beginTransaction()
.replace(id.frame_layout, requestFragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
}
id.log_out -> {
FirebaseAuth.getInstance().signOut()
val intent = Intent(this@MainActivity, LoginActivity::class.java)
startActivity(intent)
finish()
}
}
true
}
btn.setOnClickListener {
val main = Intent(this,
UsersActivity::class.java)
//main.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
startActivity(main)
}
Chatbtn.setOnClickListener {
val intent = Intent(this@MainActivity, ChatActivity::class.java)
startActivity(intent)
}
}
override fun onStart() {
super.onStart()
// Check if user is signed in (non-null) and update UI accordingly.
//val currentUser : FirebaseUser?
//currentUser = FirebaseAuth.getInstance().currentUser
if (firebaseUser == null) {
val intent = Intent(this@MainActivity, LoginActivity::class.java)
startActivity(intent)
finish()
}
}
}
here is the logcat E/AndroidRuntime: FATAL EXCEPTION: main Process: com.google.meetchat, PID: 13273 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.meetchat/com.google.meetchat.MainActivity}: kotlin.KotlinNullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2956) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3091) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1843) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6758) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:497) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:912) Caused by: kotlin.KotlinNullPointerException at com.google.meetchat.MainActivity.onCreate(MainActivity.kt:44) at android.app.Activity.performCreate(Activity.java:7136) at android.app.Activity.performCreate(Activity.java:7127) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2933) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3091) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1843) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6758) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:497) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:912) Process 13273 terminated.