Idealim
article thumbnail

/* 본 게시물은 ' ' 의 내용을 토대로 작성되었습니다. */

참고 자료

[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)
   }
}

실행 결과

반응형
profile

Idealim

@Idealim

읽어주셔서 감사합니다. 잘못된 내용이 있으면 언제든 댓글로 피드백 부탁드립니다.