본문 바로가기

개발84

[코틀린] 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.
안드로이드 코틀린 API 사용 중에 java.lang.IllegalArgumentException: Unable to create converter for class [클래스 경로] 뜨는 이유 유튜브 api를 쓰는데 java.lang.IllegalArgumentException이 자꾸 뜬다. 분명 api 응답에 맞게 클래스를 맞추고 @SerializeName으로 지정까지 해줬는데 말이다. 알고보니 @SerializeName을 복붙하고 수정해야하는데 복붙만 해놓고 수정을 안해서 그런거 였다.... 이런 멍청한 실수를.. 혹여나 api쓰다가 저 오류가 나면 클래스 이름이 맞나 잘 확인해보자. 2024. 2. 8.
TIL: Companion Object와 Object의 차이 Object Object는 싱글톤 패턴을 쉽게 사용할 수 있게 해준다. 초기화 시점은 object가 사용되는 시점이다. 특징으로는 thread safe 하다. thread safe란? 여러 스레드가 한 객체를 동시에 참조해도 실행에 문제가 없는 것을 말한다. 이해하기 힘들다면 thread safe하지 않은 예시를 보면 된다. public class CountingTest { public static void main(String[] args) { Count count = new Count(); for (int i = 0; i < 100; i++) { new Thread(){ public void run(){ for (int j = 0; j < 100; j++) { System.out.println(cou.. 2024. 2. 5.
[안드로이드/코틀린] 카카오 API (해시 키)hashkey 얻는 법 카카오 api를 과제로 쓰려는데 사용하려면 등록을 해야한다고 한다. 등록을 해보자. https://developers.kakao.com/ 로 접속 내 어플리케이션 -> 어플리케이션 추가하기 -> 추가된 앱 클릭 -> 플랫폼을 클릭하면 해당 화면이 나올 것이다. 필자는 이미 안드로이드를 등록해놨다. 아래 ios나 web처럼 등록버튼이 보일 것이다. 클릭 ㄱㄱ 이런 화면이 나올 것이다. 마켓 url은 플레이 스토어에 등록을 해놨다면 작성한다. 필자는 연습 과제이므로 등록하지 않으므로 공란으로 두었다. 여기서 키 해시 라는 말을 볼 수 있는데 이 포스트를 쓴 이유다. 키 해시는 api키가 아니다. 처음에 나는 저 2개가 같은 건줄 알았는데 검색해보니 그게 아니였다. 키해시를 알 수 있는 방법1 import c.. 2024. 2. 2.
TIL: 프래그먼트에서 키보드 숨기기 private fun hideKeyboard(){ val imm = requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(binding.etSearch.windowToken, 0) } 액티비티에서 실행되는 것이기 때문에 requireActivity() 다음에 써줘야한다. 해당 코드를 프래그먼트에 삽입하고 hideKeyboard()로 사용하면 된다. 2024. 2. 1.