본문 바로가기

안드로이드/코틀린(Kotlin)

[Android : Kotlin] 뒤로가기 두번으로 앱 종료하기 with SnackBar

300x250

뒤로가기에 대한 처리를 해주지 않으면 기본으로 구성되어있는 onBackPressed() 메서드가 호출되며 열려있는 액티비티를 finish()시키게 되어있어서 뒤로가기 버튼을 한번만 누르면 앱이 종료되어 버린다.

 

뒤로가기를 실수로 눌러도 바로 종료되어버리기 때문에 한번 눌르면 "종료하시겠습니까?" 라는 메시지를 보여주고 두번 누르면 앱을 종료하는 기능을 구현해보자.

 

이 기능을 구현하기 위해서는 onBackPressed() 메서드를 재정의해야한다.

//뒤로가기 연속 클릭 대기 시간
var mBackWait:Long = 0

먼저, 멤버변수로 뒤로가기 버튼 클릭시간의 간격을 재기위해서 변수를 선언해준다.

 

그 다음 onBackPressed() 메서드를 재정의해준다.

override fun onBackPressed() { 
        // 뒤로가기 버튼 클릭
        if(System.currentTimeMillis() - mBackWait >=2000 ) {
            mBackWait = System.currentTimeMillis()
            Snackbar.make(YOURVIEW,"뒤로가기 버튼을 한번 더 누르면 종료됩니다.",Snackbar.LENGTH_LONG).show()
        } else {
            finish() //액티비티 종료
        }
}

뒤로가기 버튼을 클릭하면 SnackBar를 보여주고 2초 이내에 뒤로가기 버튼을 한번 더 누르면 앱이 종료된다.

 

SnackBar의 첫 번째 인자에는 view의 이름, 두 번째 인자에는 보여줄 메시지, 세 번째 인자에는 보여줄 길이를 지정한다. 길이는 토스트와 같은 방법으로 LENGTH_SHORT 또는 LENGTH_LONG 중에 선택하면 된다.

그리고 .show() 메서드로 SnakBar를 view에 보여주게 된다.

 

뒤로가기 버튼의 클릭 간격을 넓히고 싶으면 위의 코드에서 2000을 원하는 시간으로 바꿔주면된다.

ms(밀리세크) 단위이며 1초는 1000ms이다.

 

 

 

 

 

 

320x100