본문 바로가기

Android Project

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

홈화면에서 상단에있는 햄버거바 버튼을 누르면 로그아웃을 할수있는 창이 나타나고, 로그아웃 버튼을 누르면 로그아웃이 완료되면서 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

 

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