본문 바로가기

전체 글100

[안드로이드/코틀린] 파이어베이스 리얼타임 데이터베이스를 연결해보자(firebase realtime database) 파이어베이스를 앱과 연결시켜보자. 우선 프로젝트를 만든다. 이런 화면을 찾으면 된다. 이름을 써주고 계속 클릭 2단계 계속 클릭 3단계 Google 애널리틱스는 사용하지 않았다. 4단계 기다리면 끝난다. 이 화면에서 왼쪽 메뉴에 Realtime Database를 클릭한다. 데이터베이스 만들기 클릭 -> 미국 클릭 -> 테스트로 만드는거니 테스트 모드에서 시작 선택 테스트는 모두가 수정할 수 있기 때문에 서비스를 할거라면 반대쪽을 선택해주자. 데이터베이스를 만들었다. 이제 등록을 할 차례다. 프로젝트 개요 옆에 톱니바퀴 아이콘을 클릭-> 프로젝트 설정 클릭 -> 내 앱 -> 안드로이드 클릭 이런 화면이 나오면 된다. 패키지를 입력해주고 등록 google-services.json파일을 위에 이미지처럼 프로젝.. 2024. 2. 27.
피그마 프레젠테이션 기능 피그마에서 앱ui를 구성하고 나면 화면 전환을 어떻게 할지 간단하게 목업할 수 있는 기능이 있다. 오른쪽 속성에서 디자인을 프로토타입으로 바꾼 후 화면전환 이벤트를 가진 요소에다가 navigate to 로 화면전환할 프레임을 선택하면 된다. 그럼 화살표로 쭈욱 이어진 것을 볼 수 있다. 그럼 끝이다. 제작한 화면들에서 화면전환 이벤트를 모두 구현했다면 Ctrl + Alt + Enter 혹은 오른쪽 상단에 삼각형 아이콘에서 프레젠트를 클릭하면 새창이 뜨면서 화면 전환을 알아볼 수 있다. 2024. 2. 21.
draw.io ERD 테이블에 행 추가하기 Ctrl + Enter를 눌러주면 한 줄이 더 생긴다. 2024. 2. 21.
[안드로이드/코틀린] 테마 적용 오류 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.brandon.playvideo_app/cohttp://m.brandon.playvideo_app.ui.detail.ChannelDetailActivity}: android.view.InflateException: Binary XML file line #16 in com.brandon.playvideo_app:layout/channeldetail_activity: Binary XML file line #16 in com.brandon.playvideo_app:layout/channeldetail_activity: Error inflating class 이런 오류가 뜬다... 해당.. 2024. 2. 20.
[코틀린] context 뜻? 활용 복습 화면에 표시되는 작업을 하다보면 유독 context를 자주 접할 수 있다. 그냥 view를 가리키는건가보다 하고 그냥저냥 이해하고 있었다. 액티비티나 프래그먼트에서 tihs라고 치거나 context라고 치면 왜 되는지느 모르겠지만... 잘 작동하니 말이다. 구글에 context라고 치면 많은 글이 나온다. 문제는 봐도 아하! 이거구나 하고 감이 오지 않는다. context라는 class에 들어가면 7000줄이 넘는 엄청난 양의 코드를 볼 수 있다. 이걸 다 읽을 엄두가 나지 않고 딱히 몰라도 여태 사용하는데는 지장이 없어서 미루고 미루었다. 문제는 지겹도록 나오는 context를 어떤 식으로 써야하는지 도통 감이 잡히지 않으니 매개변수로 context가 나올 때마다 뭘 넣어야할지 몰라서 매번 시간을 낭비.. 2024. 2. 16.
[안드로이드/코틀린] 프래그먼트에서 뒤로 가기 구현하기 프래그먼트에서 프래그먼트로 뒤로 가야하는 걸 구현해야했다. 뷰페이저에서는 onbackpressed를 쓰면 되지만 우리가 했던 프로젝트는 뷰페이저를 쓰지 않았었다. 우선 메인액티비티 안에 a프래그먼트가 있고, a 프래그먼트에서 b액티비티로 화면을 전환한다. 여기서 b액티비티에서 뒤로가기 버튼을 누르면 a프래그먼트로 전환되게 만들어야 했다. 구글에 프래그먼트 뒤로 가기를 검색하고 gpt한테도 물어봤지만 마땅한 답을 찾을 수가 없었다. 튜터님한테 물어봐서 답을 찾을 수 있었다. binding.ivBack.setOnClickListener { requireActivity().supportFragmentManager.popBackStack() } 이 코드를 b액티비티에 oncraate() 안에 넣으니 a프래그먼트.. 2024. 2. 15.
유튜브 api 등록하는 방법 어제 글을 쓰는데 가장 중요한 유튜브 api 를 등록하는 방법을 안썼다. 구글 클라우드 콘솔에서 프로젝트를 생성한 후, 상단 검색으로 youtube api 라고 치면 검색결과에 나올 것이다. 그리고 사용버튼을 누르면 끝. 아래링크는 유튜브 api 페이지이다. https://console.cloud.google.com/marketplace/product/google/youtube.googleapis.com?q=search&referrer=search&authuser=1&hl=ko&project=utility-encoder-414305 Google Cloud console console.cloud.google.com 맨 아래에 유튜브 데이터 api v3가 있다면 적용 완료. 그리고 사용자 인증 정보 메뉴로 .. 2024. 2. 14.
[안드로이드/코틀린] 유튜브 api 사용해보기 부트캠프 과제로 유튜브 api를 사용해보았다. 짜증나는 점은 기능이 매우 많은데 한번에 모두 불러올 수가 없었다. 검색 페이지를 맡아서 리사이클러 뷰에 영상 목록을 불러오는데 영상을 검색할 때 api요청을 보내고, 해당 결과를 또 api 요청을 보내서 영상에 대한 정보를 받아와야 했다. part에다가 snippet,contentdetail 등 필요한 부분만 뽑아서 쓰는 방식이었다. 우선 api 통신을 하기위해 레트로핏2 라는 라이브러리를 사용한다. object RetrofitClient { private val BASE_URL = "https://www.googleapis.com/youtube/v3/" val apiService: YouTubeApi get() = instance.create(YouTub.. 2024. 2. 13.
java.lang.NullpointerException: Parameter specified as non-null is null: method [클래스 경로].<init>, parameter [파라미터명] java.lang.NullpointerException: Parameter specified as non-null is null: method [클래스 경로]., parameter [파라미터명] 유튜브 api에서 정보를 받아와서 가공하는데 이런 오류가 뜬다. 원인: 로그에 친절하게 써져있다. 파라미터 중에 널이 아닌 곳으로 널이 들어있다. 뒤에 파라미터 명까지 알려준다. 확인해보니 해당 값이 null로 들어오고 있었다. 해결: null처리를 해주면 된다. 이 간단한 걸 NullpointerException이란 말에 꽂혀서 시간 날린 걸 생각하면 너무 화가 난다. 로그를 잘 읽어보자. 물론 로그가 모든 에러를 해결해주는데 도움을 주는 건 아니지만 이렇게 다이렉트로 알려주는 경우가 있다. 2024. 2. 8.