0% found this document useful (0 votes)
28 views10 pages

Mclab 12

The document describes creating a login and registration system using Kotlin and Firebase. It includes three activities - a login activity, registration activity, and profile activity. The login activity allows users to sign in with email and password. The registration activity collects user details and saves it to the Firebase database. The profile activity fetches and displays the user data from the database.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views10 pages

Mclab 12

The document describes creating a login and registration system using Kotlin and Firebase. It includes three activities - a login activity, registration activity, and profile activity. The login activity allows users to sign in with email and password. The registration activity collects user details and saves it to the Firebase database. The profile activity fetches and displays the user data from the database.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

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:

You might also like