반응형
1. 개요
Android XML 코드 구현 방식에서는 onBackPressed() 코드를 Override 해서 사용하면 되었지만, Compose에서는 Override 할 수 있는 코드가 소개되어있지 않아, 간단하게 뒤로 가기 2번 실행했을 때 앱을 종료하는 코드를 소개하려고 합니다.
2. 구현
BackOnPressed()를 Compose에 구현한다
@Composable
fun BackOnPressed() {
val context = LocalContext.current
var backPressedState by remember { mutableStateOf(true) }
var backPressedTime = 0L
BackHandler(enabled = backPressedState) {
if(System.currentTimeMillis() - backPressedTime <= 400L) {
// 앱 종료
(context as Activity).finish()
} else {
backPressedState = true
Toast.makeText(context, "한 번 더 누르시면 앱이 종료됩니다.", Toast.LENGTH_SHORT).show()
}
backPressedTime = System.currentTimeMillis()
}
}
MainActivity.kt
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
LoginTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
BackOnPressed()
Greeting("Android")
}
}
}
}
}
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
)
}
반응형