3번째 flow 예제 공부를 마쳤다. stateflow, sharedflow, channel에 대한 예제를 꾸렸지만, 모두 클릭 리스너를 달아 데이터를 가져오는데 그친 간단한 예제이지만, 기능보다는 각각의 특징과 공부한 내용들로 주를 이루었다. 우선 코드를 보자. MainViewModel.kt class MainViewModel : ViewModel() { //StateFlow private val _uiState = MutableStateFlow(UiState.Loading) val uiState: StateFlow = _uiState.asStateFlow() //SharedFlow //설정할 수 있다는 것만 보여주기 위함 //아래 설정은 다 기본값 private val _uiShared = Mutab..
지금은 해결되고 캡처한 것이지만, 모든 코드에 빨간줄이 그어졌다... 해결법은... 윈도우나 맥에 사용자 폴더 안에 있는. gradle 폴더를 삭제하고 cleanProject -> RebuildProject -> Invalidate Caches Restart를 해주면 된다!! 그러면. gradle를 처음부터 다시 삭제하고 깔아주면서 해결이 된다. 갑자기 이런 오류가 뜬 요인은 잘 모르겠다.. 만약 위에 방법이 안된다면, 두번째 방법을 사용해보자. 안드로이드 스튜디오를 잠시 꺼주고, 해당 프로젝트 파일 안에 있는 .idea 파일을 삭제하고 다시 실행해본다. 나같은 경우는 두번째 방법으로 해결되었다.
상황은 이렇습니다. 다음과 같이 3개의 EditText가 있고, 이 EditText의 글씨가 모두 써졌으면, 아래 버튼이 활성화되게끔 하려고 합니다. 우선 저는 상태에 따른 모델 값이 필요하다고 생각하여 다음과 같이 UiState를 만들었습니다. UiState.kt data class UiState( val type: EditType? = null, var editState: EditState = EditState.EMPTY ) { enum class EditState { EMPTY, WRITTEN } enum class EditType { NAME, ADDRESS, PHONENUM } }ㅇ UiState는 type: EditType -> EditText의 들어갈 내용에 대한 타입입니다. (NAME, A..
최근에 새로운 앱을 만들기 위해 고군분투 중이다. 기존 앱에 서버에서 받는 api의 원시 데이터는 xml을 사용했는데, 이번 앱은 json을 사용하게 되었다. 다행이 인터넷에 자료가 많아 데이터를 보내는데 문제가 없었다. 그렇지만, 이미지를 보내는 과정에서 어려움이 생겼다. 서버 개발자분이 Multpart를 통해서 서버로 이미지를 보내달라고 요청하셨다. 멀티파트?? 구글에 쳐본 결과 멀티파트란? - HTTP 요청의 한 종류로서 서버에 파일이나 데이터를 보내기 위한 요청 방식이다. - 보통은 큰 용량의 바이너리 데이터 전송에 적합하다. 한마디로 큰 이미지 파일 등을 서버로 넘겨줄 때 적합한 방법이다. 레트로핏을 이용해서 사용해보자 (물론 레트로핏 종속성과 실행법은 모두 알고 있다는 전제로 설명하겠다.) 데..
A 액티비티에서 B 액티비티로 이동하는 중, 다음과 같이 상태 표시줄이 사라지는 상황이 생겨 버렸다. 처음 들어간 화면인 A 액티비티에서는 잘 나오지만, B 액티비티로 이동하면 사라진다. A 액티비티 B 액티비티 알아보니 안드로이드에는 light모드와 dark 모드가 있는데, 그 둘을 구분하기 위한 statusbar 속성을 달아주어야 하는 것이다. theme.xml 이 두개가 있을 텐데, light 모드는 true 이것을 추가해주고 dark 모드는 false로 해준다. false 이렇게 각각 설정해주고 다시 앱을 실행해 보자. 정상적으로 잘 나오는 것을 확인할 수 있다.
너무 오랜만에 글을 써서 어색하다. 요 며칠 동안 코딩 테스트, 스마트 스토어 준비, 회사 앱 개발, 마블 정주행 등등.. 아무쪼록 빈틈없는 바쁜 날들을 보내고 있다. 오늘은 카카오톡 로그인 기능을 구현하고, 디버그와 릴리즈 해시 키를 등록하였음에도 불구하고, KakaoTalk is installed but not connected to Kakao account. 같은 오류가 뜨는 이유를 알아보자. 위에 영어 뜻은 카카오톡은 설치되엇지만, 카카오 계정이 연결되지 않았다는 뜻이다. 말 뜻 그대로, 카카오톡은 설치했지만, 카카오톡 로그인을 하지 않았다는 뜻이다. 이에 대한 예외 처리를 해주면 된다. 다음 코드를 보자. public void signInKakao(Context context) { this.co..
안드로이드 레트로핏을 연동 rxJava2를 통해 스트림으로 서버를 호출하였다. 그런데 하루 종일 다음과 같은 오류가 계속 떴다. Unable to create call adapter for io.reactivex.Observable for method LeaveOutApi.postLeaveOutUser 호출하는 어뎁터를 만들 수 없다는 뜻인 것 같은데, 해결법을 찾아보니, .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) 레트로핏 빌더에다가 다음과 같은 AdapterFactory를 추가해주라는 것이었다. 하지만 이미 난 레트로핏에다가 추가를 해주었다. 그렇다면 무엇이 문제일까? 문제는 이것이었다. REST를 호출하는 인터페이스 부분에서 Observa..
이 글은 간단한 인터페이스에 대한 예제만을 보여드립니다. 깊게는 들어가지 못하는 제 게으름과 실력을 탓합니다. flutter만 하다가 자바로 넘어온 지 어언 2주가 넘어간다. 문득 궁금한 기능이 생겼는데, 바로 A라는 액티비티에 있는 메서드를 내가 B액티비티 혹은 프래그먼트에 있을 때, 실행시키고 싶다면 어떻게 해야 할까? flutter에 경우는 생성자로 Function을 넘겨주어 그 function을 실행하면, 생성자를 넘겨준 쪽에서 이 함수가 실행이 되었다. 그렇다면 자바에서 어떻게 할까? 바로 인터페이스다. 나도 항상 이 인터페이스를 그날그날 이해하면서도, 잘 모르고 넘긴 경우가 있다. 사실은 아직도 잘 모르지만, 이번에 내가 위와 같은 상황에서 인터페이스를 활용하는 법을 기록하기 위해 적어둔다. ..
현재 회사의 앱에서 영어와 한국어, 이렇게 두 글로벌 언어를 두고, 기기에서 언어에 맞게 대응하고 있다. 그러다가, 자바 코드에서 언어뿐만 아니라, 해당 언어에 따라, ui나 메서드를 달리하고 싶은 일이 생겼다. 그렇게 해서 알아낸 코드가 이것이다. Locale mSysLocale = getResources().getConfiguration().locale; String strLanguage = mSysLocale.getLanguage(); 다음 코드를 사용하면, 현재 디바이스에 설정되어 있는 언어 코드가 String에 담긴다. 메서드를 만들어 예를 들면 public class MainActivity extends AppCompatActivity { @Override protected void onCre..
오늘 벌써 글만 3개째이다. 공부량이 많은 만큼 좋다고 생각한다. 오늘도 역시 깡샘의 안드로이드를 출처로 한다. 오늘 배울 것은 코틀린의 컬렉션 타입이다. Array - 배열 표현 코틀린의 배열은 Array라고 표현하며, 첫 번째 매개변수는 배열의 크기를 지정하며, 두 번째 매개변수는 초기값을 지정하는 함수이다. (size: Int, init: (int) -> T) 예를 들어 이렇게 선언할 수 있다. val data: Array = Array(3, { 0 }) 배열의 데이터에 접근할 때는 대괄호([])나 set(), get() 함수로 값을 넣어주거나 가져올 수 있다. fun main() { val data1: Array = Array(3, { 0 }) data1[0] = 10 data1[1] = 20 d..
미리 출처를 남깁니다. 요즘 개발하는 정대리님의 유익한 유튜브를 보면서 코틀린을 익히는 중입니다. 항상 감사합니다. 출처 https://www.youtube.com/channel/UCutO2H_AVmWHbzvE92rpxjA 개발하는 정대리 한국에서 개발자로 살아남기! 예전에 저처럼 프로그래머가 되고 싶지만 그 길을 몰라 해매는 분들에게 도움 되고자 이 채널을 운영하기 시작했습니다. 프로그램에 관심 있는 분들이나 취업 준 www.youtube.com 해결법 사실 직접적인 이해보다는 스택 오버 플로우에서 가져온 코드를 그대로 사용했다는 점이 크기 때문에 자세히 코드에 대해 이해하지는 못하고 있다. 중요한 흐름만 파악해놓은 상태에서 코드에 간략한 소개만 하겠다. 정대리님의 영상을 보고 나서, X, Y, Z 축..