Ssongcode;
[Compose] ViewModel, State
컴포즈에서의 ViewModel 버튼을 클릭하였을 때 원래 있던 텍스트가 다른 텍스트로 변경되는 프로그램을 구현하였을 때 생명주기를 고려하지 않는다면 다음과 같이 구현할 수 있다. // val data = remember{mutableStateOf("Hello")} Button(onClick = { // data.value = "World" //눌러도 변경이 안됨. //변경이 되면 컴포즈가 다시 리셋이되어 hello가 계속 나옴 //따라서 리멤버 사용 만일 remember를 사용하지 않는다면 눌러도 변경이 안되는 것을 확인할 수 있다. 왜냐하면 변경이 되어도, 다시 컴포지션이 발생하여 리셋이 되어 원래 있던 Hello가 계속 나오게 된다. 이를 해결하기 위해 이전에 있던 상태를 기억하기 위해 위의 코드처럼..
![[Compose] Navigation](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUugne%2FbtrMqtBk2nY%2Fk402c2d8hwVYgoD6qZLIU1%2Fimg.png)
[Compose] Navigation
프로젝트를 진행하면서 Navigation기능을 많이 사용하였다. 프래그먼트간의 이동을 더욱 편리하게하고, safe Args특성을 사용하여 데이터 전달을 더욱 안전하게 할 수 있기 때문이다. 컴포즈에서도 네비게이션을 사용하여 뷰를 옮길 수 있으며 데이터도 전달할 수 있다. 두 번째 화면의 이동은 아무런 조건 없이 가능하고, 세 번째 화면의 이동은 해당 textField에서 입력한 값이 있어야만 가능하고, 이동했을 때의 세 번째 화면에서는 해당 textfield에 있던 값을 띄워보자! gradle파일에 navigation compose 라이브러리를 작성하자. implementation 'androidx.navigation:navigation-compose:2.4.0-alpha10' setContent { v..
![[Compose] TextField, Scaffold, SnackBar](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foi4RZ%2FbtrMtFnINeb%2FQqt7JwLqUfZa5ZwVFhrWF1%2Fimg.png)
[Compose] TextField, Scaffold, SnackBar
이 글에서는 TextField를 만들어, 현재 입력하고 있는 값에서 버튼을 누르면 입력했던 값이 SnackBar형태로 나오는 간단한 프로그램을 짜보자. Scaffold( scaffoldState = scaffoldState //스낵바를 활용하기위해 ) { Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ){ TextField( // value = textValue.value, //비어있으면 입력이 안됨(값이 변하지 않기 때문에) // onValueChange = { // textValue.value = it /..
![[JETPACK개론] Navigation](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdYSyq6%2FbtrLOgqi0ol%2F6LQKYiBG98AeKLxnZRBOqk%2Fimg.png)
[JETPACK개론] Navigation
여태까지 진행했던 프로젝트에서 꼭 빠짐없이 Navigation을 도입하였다. 왜냐하면 프래그먼트간의 이동을 쉽게할 수 있고, 데이터전달을 기존의 방식보다 안전하게 할 수 있기 때문이다. 전에 트러버 프로젝트에서 Bottom Navigation과 Jetpack Navigation을 연결하면서 쓴 글이 있다. [Android] JetPack Navigation으로 Bottom Navigation 설정하기 안드로이드를 공부하면서 간단한 화면 전환은 intent로 구현했었다. 하지만 레이아웃이 복잡해질수록 코드가 길어지며 가독성이 떨어지는 문제점을 확인할 수 있었다. 이 경우를 해결하기 위해 J ssongcode.tistory.com 기존에 썼던 글이 있지만, 이번에 한번 더 정리하면서 Navigation을 왜..
![[JETPACK개론] WorkManager(5) + 주기적작업, 고유작업](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbv1aB9%2FbtrLK1r35bj%2FCLs3O2VczprZKvAAMWc0o1%2Fimg.png)
[JETPACK개론] WorkManager(5) + 주기적작업, 고유작업
주기적작업 경우에 따라 앱에서 특정 작업을 주기적으로 실행해야 할 수 있다. 예를 들어 주기적으로 데이터를 백업하거나 최신 컨텐츠를 앱에 다운로드 하거나 로그를 서버에 업로드해야 할 수 있다. 이 때 주기적으로 실행되는 WorkManager를 만들 수 있다. class WorkManager1(context : Context, workerParameters: WorkerParameters) : Worker(context, workerParameters){ override fun doWork(): Result { Log.d("WorkManager1", "doWork") val format = SimpleDateFormat("hh:mm:ss") val currentTime = format.format(Date..