본문 바로가기
Android Project/Extras..

[Android/Kotlin] 커뮤니티앱(11) - 로그아웃

by juwon2 2024. 1. 28.

홈화면에서 상단에있는 햄버거바 버튼을 누르면 로그아웃을 할수있는 창이 나타나고, 로그아웃 버튼을 누르면 로그아웃이 완료되면서 introActivity로 이동할수있게 만들어볼것이다

 

먼저 로그아웃창과 레이아웃을 만들어준다

레이아웃은 완전 간단하게 로그아웃버튼만 가운데에 배치해줬다

<?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"
    tools:context=".setting.SettingActivity">

    <Button
        android:id="@+id/logoutBtn"
        android:text="로그아웃"
        android:background="@drawable/background_radius_yellow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

activity_setiing.xml

 

activity_setiing.xml

 

 

이제 이 버튼을 클릭했을때 로그아웃이 되고, IntroActivity로 이동하도록 해준다

근데 뒤로가기를 누르면 기존 엑티비티가 나오는 문제가 발생하기 때문에 기존의 엑티비티들을 지워주는 코드도 작성해준다.

package com.example.mysololife.setting

class SettingActivity : AppCompatActivity() {

    private lateinit var auth : FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_setting)

        auth = Firebase.auth

        val loginButton : Button = findViewById(R.id.logoutBtn)


        // logoutBtn클릭했을때
        loginButton.setOnClickListener {

            // 로그아웃
            auth.signOut()
            
            Toast.makeText(this, "로그아웃 되었습니다", Toast.LENGTH_SHORT).show()

            // IntroActivity로 이동
            val intent = Intent(this, IntroActivity::class.java)
            // 기존엑티비티 삭제(뒤로가기 눌렀을때 기존엑티비티로 안가도록)
            intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_CLEAR_TASK
            startActivity(intent)

        }
    }
}

SettingActivity.kt

 

 

햄버거바 클릭하면 로그아웃화면창으로 이동하도록해주는 코드를 아직 안써줬기때문에 MainActivity로 돌아가서 써준다

package com.example.mysololife

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        // settingBtn 클릭시 SettingActivity로 이동
        findViewById<ImageView>(R.id.settingBtn).setOnClickListener {
            val intent = Intent(this, SettingActivity::class.java)
            startActivity(intent)
        }
    }
}

MainActivity.kt

 

이렇게 해주면 로그아웃이 잘 되는것을 확인할수있다