/* 본 게시물은 ' ' 의 내용을 토대로 작성되었습니다. */
참고 자료
[URL] :
기본 코드 베이스는 저번에 만든 BottomNavigation을 활용하겠다. Jetpack Compose의 장점은 기존의 View 와 호환이 가능하다는 점이다. 이를 이용해 Activity 간 이동을 구현해보자.
SecondActivity
class SecondActivity : ComponentActivity() {
private val key: String by lazy {
intent?.getStringExtra("key") ?: "key is null"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
SecondScreen(key = key){
onBackPressed()
}
}
}
}
@Composable
fun SecondScreen(key: String, onBack: () -> Unit) {
Scaffold(
topBar = {
TopAppBar(
title = { Text(text = "SecondActivity") },
elevation = 18.dp,
//왼쪽 Naviagation Icon
navigationIcon = {
IconButton(
onClick = onBack
) {
// Material.Icons.ArrowBack : ImageVector 로 받음
Icon(Icons.Filled.ArrowBack, contentDescription = null)
}
},
)
},
content = {
Box(modifier = Modifier.fillMaxSize(), Alignment.Center){
Text( text = key, fontSize = 30.sp, fontWeight = FontWeight.Bold)
}
}
)
}
- SecondScreen의 content 값으로 onBackPressed() 함수를 넘겨주었다. 뒤로가기 버튼을 누르면 onBackPressed()를 호출한다.
- 기존 View 기반의 intent를 활용가능하다.
HomeScreen
@Composable
fun HomeScreenContent(homeScreen: BottomNavType){
Box(
modifier = Modifier.fillMaxSize(), Alignment.Center
){
when(homeScreen){
BottomNavType.Home -> StartActivity()
BottomNavType.B -> Text( text = "B", fontSize = 30.sp, fontWeight = FontWeight.Bold)
BottomNavType.C -> Text( text = "C", fontSize = 30.sp, fontWeight = FontWeight.Bold)
else -> Text( text = "D", fontSize = 30.sp, fontWeight = FontWeight.Bold)
}
}
}
@Composable
fun StartActivity(){
val context = LocalContext.current
val intent = Intent(context,SecondActivity::class.java).apply {
putExtra("key", "value")
}
Button(
onClick = {
context.startActivity(intent)
}
){
Text( text = "StartActivity", fontSize = 30.sp, fontWeight = FontWeight.Bold)
}
}
실행 결과
반응형