ATEEQ KHAN
225179
BS CS 4
MC LAB 12
Main activity:
package com.example.lab14
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.FirebaseApp
class MainActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Initialize Firebase
FirebaseApp.initializeApp(this)
auth = FirebaseAuth.getInstance()
val emailEditText = findViewById<EditText>(R.id.emailEditText)
val passwordEditText = findViewById<EditText>(R.id.passwordEditText)
val loginButton = findViewById<Button>(R.id.loginButton)
val registerButton = findViewById<Button>(R.id.registerButton)
loginButton.setOnClickListener {
val email = emailEditText.text.toString()
val password = passwordEditText.text.toString()
signIn(email, password)
}
registerButton.setOnClickListener {
val intent = Intent(this, MainActivity2::class.java)
startActivity(intent)
}
}
private fun signIn(email: String, password: String) {
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's
information
val user = auth.currentUser
// Update UI or start a new activity
} else {
// If sign in fails, display a message to the user.
// Update UI with the error message.
}
}
}
}
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="@color/blue"
tools:context=".MainActivity">
<TextView
android:id="@+id/loginTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="152dp"
android:text="Log In"
android:textColor="@color/white"
android:textSize="40sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/emailEditText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:hint="Email"
android:inputType="textEmailAddress"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/loginTextView"
app:layout_constraintHorizontal_bias="0.5" />
<EditText
android:id="@+id/passwordEditText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:hint="Password"
android:inputType="textPassword"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/emailEditText"
app:layout_constraintHorizontal_bias="0.5" />
<Button
android:id="@+id/loginButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:backgroundTint="@color/orange"
android:text="Login"
android:textColor="@color/white"
app:layout_constraintEnd_toStartOf="@+id/registerButton"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/passwordEditText"
app:layout_constraintHorizontal_bias="0.5" />
<Button
android:id="@+id/registerButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:backgroundTint="@color/orange"
android:text="Register"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/loginButton"
app:layout_constraintTop_toBottomOf="@id/passwordEditText"
app:layout_constraintHorizontal_bias="0.5" />
</androidx.constraintlayout.widget.ConstraintLayout>
Main activity 2:
package com.example.lab14
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase
class MainActivity2 : AppCompatActivity() {
data class User(val email: String = "", val password: String = "", val age:
Int = 0)
private lateinit var database: DatabaseReference
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
database = FirebaseDatabase.getInstance().getReference("users")
val emailEditText = findViewById<EditText>(R.id.emailEditText)
val passwordEditText = findViewById<EditText>(R.id.passwordEditText)
val ageEditText = findViewById<EditText>(R.id.ageEditText)
val submitButton = findViewById<Button>(R.id.submitButton)
submitButton.setOnClickListener {
val email = emailEditText.text.toString()
val password = passwordEditText.text.toString()
val age = ageEditText.text.toString().toIntOrNull() ?: 0
val user = User(email, password, age)
saveUserData(user)
}
}
private fun saveUserData(user: User) {
val userId = database.push().key
if (userId != null) {
database.child(userId).setValue(user)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
openMainActivity3()
} else {
// Error occurred while saving data
}
}
}
}
private fun openMainActivity3() {
val intent = Intent(this, MainActivity3::class.java)
startActivity(intent)
}
}
}
xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="@color/blue"
tools:context=".MainActivity2">
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="32dp"
android:layout_marginLeft="150dp"
android:src="@drawable/ic_launcher_foreground"
/>
<EditText
android:id="@+id/emailEditText"
android:layout_width="156dp"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView"
android:layout_marginLeft="150dp"
android:layout_marginTop="32dp"
android:hint="Email"
android:inputType="textEmailAddress"
android:textStyle="bold" />
<EditText
android:id="@+id/passwordEditText"
android:layout_width="156dp"
android:layout_height="wrap_content"
android:layout_below="@+id/emailEditText"
android:layout_marginLeft="150dp"
android:layout_marginTop="50dp"
android:hint="Password"
android:inputType="textPassword"
android:textStyle="bold"
tools:ignore="RtlHardcoded" />
<EditText
android:id="@+id/ageEditText"
android:layout_width="156dp"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_marginLeft="150dp"
android:layout_below="@+id/passwordEditText"
android:hint="Age"
android:inputType="number"
android:textStyle="bold"
tools:ignore="Autofill,HardcodedText,RtlHardcoded" />
<Button
android:id="@+id/submitButton"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_below="@+id/ageEditText"
android:layout_marginLeft="150dp"
android:layout_marginTop="50dp"
android:backgroundTint="@color/orange"
android:text="Submit"
android:textColor="@color/white"
/>
</RelativeLayout>
Mainactivity3:
package com.example.lab14
import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.google.firebase.database.*
class MainActivity3 : AppCompatActivity() {
private lateinit var database: DatabaseReference
private lateinit var usersTextView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main3)
database = FirebaseDatabase.getInstance().getReference("users")
usersTextView = findViewById(R.id.usersTextView)
fetchUserData()
}
private fun fetchUserData() {
database.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
val stringBuilder = StringBuilder()
for (userSnapshot in snapshot.children) {
val email =
userSnapshot.child("email").getValue(String::class.java)
val password =
userSnapshot.child("password").getValue(String::class.java)
val age =
userSnapshot.child("age").getValue(Int::class.java)
if (email != null && password != null && age != null) {
stringBuilder.append("Email: $email\n")
stringBuilder.append("Password: $password\n")
stringBuilder.append("Age: $age\n\n")
}
}
usersTextView.text = stringBuilder.toString()
}
override fun onCancelled(error: DatabaseError) {
// Handle possible errors
}
})
}
}
xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/blue"
android:padding="16dp">
<ImageView
android:id="@+id/profileImageView"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp" />
<TextView
android:id="@+id/emailTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@android:color/black"
android:text="Email: "
android:layout_below="@id/profileImageView"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"/>
<TextView
android:id="@+id/passwordTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@android:color/black"
android:text="Password: "
android:layout_below="@id/emailTextView"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"/>
<TextView
android:id="@+id/ageTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@android:color/black"
android:text="Age: "
android:layout_below="@id/passwordTextView"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"/>
<TextView
android:id="@+id/usersTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@android:color/black"
android:text="Users: "
android:layout_below="@id/ageTextView"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"/>
</RelativeLayout>
User class:
package com.example.lab14
data class user(var email: String = "",
var password: String = "",
var age: Int = 0)
Output: