본문 바로가기
소소한 개발 꿀팁

다른 액티비티에서 특정 액티비티 종료하기

by 지게요 2022. 1. 5.
728x90
반응형

어플을 만들다가 메인 페이지마이페이지 회원 탈퇴로그인 페이지Back키어플 종료를 구현하려고 했다.

하지만 Back를 누르면 다시메인 페이지가 나오는 현상이 있었다. 곰곰이 생각해보니 마이페이지에서 회원 탈퇴를 할 때 finish()를 해줘도 마이페이지만 종료되고 메인 페이지는 남아있게 되는 것이었다. 그래서 특정 액티비티를 종료하는 방법을 찾았다.

 

 

                                                        정상                                                                             비정상

왼쪽이 구현하려던 알고리즘이고 오른쪽이 발생한 현상이었다.

 

# 해결방법

 

MainActivity.kt

Class MainActivity : AppCompatActivity(){

	companion object{
        // MainActivity 타입의 객체를 동반 객체로 선언한다(자바에서는 static)
    	var mainActivity : MainActivity? = null 
    }
    
     override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        // 위에서 선언한 mainActivity에 자기 자신을 담아둔다
        mainActivity = this
        
        }
    

}

 

MyPageActivity.kt

class Mypage : AppCompatActivity(){

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.Mypage)
        
        val loginSignup = Intent(this,login_signup::class.java)
        
        // MainActivity에서 동반객체로 선언한 mainActivity를 받아온다
         val mainActivity = MainActivity.mainActivity // MainActivity는 생략가능
         
         google_logout.setOnClickListener {
            signOut()
            startActivity(loginSignup) // 로그인 페이지로 이동
            mainActivity.finish() // 받아온 mainActivity를 통해 finish 시켜준다
            finish() // MypageActivity 종료
         }
        
        
        }
        
    /// 구글 로그아웃
    private fun signOut() {
        FirebaseAuth.getInstance().signOut()
    }

}

 

반응형