본문 바로가기

분류 전체보기134

[Android Kotlin] navigation component에 bottom navigation 연결 했을때, bottom navigation이 작동되지 않을때 해결 방법 오늘의 기록은 navigation component를 사용하면서 bottom navigaion을 사용할 때, bottom navigaion이작동되지 않을때 해결하는 방법을 알아보았다. 문제 상황 클릭만 되고 화면이 바뀌지 않았다. 이를 해결하기 위해서는 menu xml의 이름을 잘 확인해야 한다. 문제 코드 naviagtion 화면과 문제 코드의 아이디가 다르다는 것을 알 수 있다. freeBoardFragment - FreeBoardFragment menu 코드의 대문자가 달라서 bottom navigation이 작동되지 않았다.이것을 고쳐서 완전히 해결했다. 2022. 4. 22.
android.view.InflateException: Binary XML file line #15 in com.example.community:layout/activity_main: Binary XML file line #15 in com.example.community:layout/activity_main: Error inflating class TextView 에러 해결 오늘의 에러는 view가 inflate가 제데로 되지 않았을때 생길 수 있는 에러이다. 나는 문제가 생긴 textView에 theme를 만들어 적용시켜 사용하고 있었는데, 문제의 테마 코드 textVIew인데 theme의 parent를 toolbar의 title로 지정해서 오류가 나는 거였다. 해결한 테마 코드 parent를 textView로 바꿔주면서 간단히 해결했다. 쓸데없이 1시간을 낭비했던 오류었다. 2022. 4. 21.
java.lang.ClassNotFoundException: Didn't find class "com.example.community.MainActivity" 오늘의 에러는 바로 클래스를 찾을 수 없을 때 뜨는 버그를 해결하는 방법을 알아보겠다. 에러 문구 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.community/com.example.community.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.community.MainActivity" on path: DexPathList[[zip file "/data/app/~~Tv8GPXV34ciClaHYGt-_Gg==/com.example.community-9AL2Z2ybv12CTGrbGEP6mQ==/base.a.. 2022. 4. 19.
Plugin [id: 'dagger.hilt.android.plugin'] was not found in any of the following sources 이번 오류는 dagger hilt를 쓰는 사람들에게 나타날수 있는 오류이다 오류 문구 * Exception is: org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'dagger.hilt.android.plugin'] was not found in any of the following sources: - Gradle Core Plugins (plugin is not in 'org.gradle' namespace) - Plugin Repositories (plugin dependency must include a version number for this source) at org.gradle.plugin.use.internal.DefaultPlugi.. 2022. 4. 18.
YouTube 화면 양옆에 검은 공백이 있을 때 해결 방법 유튜브를 컴퓨터로 보다 보면 간혹 이런 상황이 생긴다. 전체 화면인듯 하면서도 전체 화면이 아닌 이 화면은 생기면 양 옆에 남은 여백 때문에 상당히 불편하다(?). 그래서 이걸 해결하는 방법을 모르시는 분들을 위해 해결법을 알려주도록 하겠다(나도 기억할 겸에). 일단 저 화면은 영화관 모드라 하는 유튜브 화면 모드이다 유튜브 화면에 오른쪽 하단에 전체화면 버튼 옆에 직사각형 모양의 아이콘이 영화관 모드를 설정하는 버튼인데 그것을 클릭해주면 원래 화면으로 복구시킬수 있다. 나도 몰랐던 문제였기 때문에 혹여나 이걸 모르시는 분들을 위해 포스팅을 남기겠다. 2022. 4. 16.
[Android] 화면 이동 방법 정리 이번 예제는 내가 알고 있는 화면 전환 방법들에 대해 정리해보겠다. 1. intent를 이용한 화면이동 intent를 이용하는 방법은 생각보다 구글에 많이 나와있어 쉽게 알아낼수 있다. // 가장 기본적인 intent 사용 방법 val intent = Intent(this, SecondActivity::class.java) startActivity(intent) 이건 가장 기본적인 intent 사용법이다. 그리고 저 예제 코드는 startActivity(this, SecondActivity::class.java)로 바꿔 쓸수 있다. 1-1. putExtra putExtra는 intent를 사용할때 데이터를 보내는 메서드로, 다음과 같이 사용할수 있다. class MainActivity: Appcompat.. 2022. 4. 12.
[Android] Room 사용법과 RecyclerView를 활용한 예제 이번 예제는 안드로이드의 가상 데이터베이스인 room을 활용해 데이터를 저장하고, 그것을 recyclerview에 보이게 하는 예제를 해보겠다. room 을 사용하기 위해서는 먼저 gradle에 추가를 해줘야 한다. build.gradle(app) plugins { id 'kotlin-kapt' ... } android { ... } dependencies { implementation "androidx.room:room-runtime:2.4.2" kapt "androidx.room:room-compiler:2.4.2" } 추가를 하고 나서, 데이터베이스에 들어갈 데이터들을 만들줘야 한다. 1. 데이터베이스 개체 클래스 생성 @Entity(tableName = "chat_table") class Chat.. 2022. 4. 12.
[Android] Room에서 데이터 무결성을 확인할 수 없습니다. 필자는 room을 이용한 예제를 만들다가 한 오류를 만났다. 오류 코드 java.lang.IllegalStateException: Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number. 번역을 하면 Room에서 데이터 무결성을 확인할 수 없습니다. 스키마를 변경했지만 버전 번호를 업데이트하는 것을 잊은 것 같습니다. 버전 번호를 늘리면 간단히 해결할 수 있습니다. 라고 해서 버전 번호를 바꿔보았다. 기존 코드 @Database(entities = [UserE.. 2022. 4. 11.
[Android Kotlin] radio button 예제 오늘은 내가 만들고 있는 프로젝트에서 새로 알게 된 radio button 이 클릭된 것의 텍스트를 가져와서 textView에 보여주는 예제를 만들어 보겠다. 먼저 나는 커스텀 다이얼로그를 사용하고, 그것을 view binding을 통해 예제를 만들었기 때문에 build.gradle에 추가를 해보도록 하겠다. build.gradle(app) plugin { ... } android { ... buildFeatures { viewBinding = true } } dependencies { .... } 뷰 바인딩에 대한 방법은 여기서 자세히 알려주지 않을 것이기 때문에 미리 공부하고 오시길 바란다. 그 다음 dialog에 쓰일 레이아웃을 만들어 주도록 하자 custom_dualog_set_standard.x.. 2022. 4. 11.
[Kotlin] coroutine 개념 정리 오늘은 내가 공부했던 코루틴의 개념을 알아보겠다. 코루틴의(coroutine) 개념 코루틴은 kotlin에서 사용하는 동시성 프로그래밍의 일종이다. 최근에 코틀린을 사용하는 앱이 늘어남에 따라, 구글에서도 강력히 추천하는 실시간 처리 라이브러리 이다. 코루틴 코루틴(coroutine)은 루틴의 일종 코루틴의 "co" 는 with, together를 뜻한다. 협동 루틴이라 할 수 있다. 코루틴의 특징 코루틴은 이전에 자신의 실행이 마지막으로 중단된 지점의 바로 다음 장소에서 실행을 재개한다. 비동기 처리에 대한 코드를 간단히 작성해준다. 비동기 콜백 처리를 순차적으로 하게 해준다. 이제 개념을 알았으니, 간단한 코드를 보면서 이해해 보자. 코틀린 예제 GlobalScope.launch { // launch.. 2022. 4. 3.
[Android] com.google.gson.JsonParseException 해결 오늘은 내가 5시간동안 헤멨던 오류에 대해 포스팅을 남기겠다. 나는 깃허브에 push 실수를 해서 어떤 파일 하나를 git bash로 삭제했었는데... 갑자기 안스 build gradle이 안되더니 다음과 같은 오류가 생겼다 처음에는 검색을 해서 해결하려 했지만 검색해서 나오는 방법들이 모두 나한테는 안 되서 혼자 막 프로젝트 설정을 건드리다 우연히(?) 해결했다. 해결 방법 File -> Settings Settings에서 gradle을 검색하면 이런 화면이 뜬다. 그 다음 gradle user home의 주소를 바꿔보았다. 그런데 해결이 됐다. 아무튼 해결하긴 했으나 이렇게 간단히 해결해서 약간 현타(?)가 왔었다.. 2022. 4. 3.
[Android] Clean Architecture 기록 오늘은 내가 Clean Architecture를 공부한 내용을 정리해 보도록 하겠다. Clean Architecture란? Clean Architecture는 Robert C. Martin이라는 사람이 2012년에 제시한 개념으로, 관심사를 분류하는 것이 목표이다. 이렇게 관심사를 분류해서 얻는 장점은 프로젝트 유지, 관리가 용이하다. 새로운 기능 적용이 빨라진다. 테스트 코드 작성이 용이하다. 등 여러 장점들이 있다. 아래의 사진으로 클린 아키텍처의 구조를 살펴보자 클린 아키텍처는 4가지의 계층으로 분류된다. Entity User Cases Controllers UI 클린 아키텍처의 구조를 보면 바깥 계층이 안쪽 계층에 의존성을 가지는 것을 볼 수 있다. android 기준으로 보기에는 어려움이 있어 .. 2022. 4. 1.
[Android Kotlin] firebase fireStore, storage를 이용해 recyclerView로 사진 출력하기 안드로이드 sns앱 만들다가 알아낸 방법을 까먹었어도 다시 볼 수 있게 이 포스팅을 쓴다. 오늘은 firebase fireStore, storage를 이용해 recyclerView로 사진 출력하는 것을 해 보겠다. 먼저 storage에 사진을 추가해보았다. 일단 나는 게시글 만들기 기능을 만들면서 게시글에 올린 이미지들을 모두 images 폴더에 넣었고, 그리고 그 폴더 안에 사용자의 uid를 담은 폴더를 만들어서 그 안에 이미지들을 저장했다. 그 다음, firestore에 데이터들을 집어넣을 때, 사용자의 uid와 이미지 주소를 같이 집어넣었다. 왜냐하면 사용자 uid가 같으면 이미지주소를 받아와 recyclerView에 보여주게 할 것이기 떄문이다. firestore와 storage에 데이터를 넣는 .. 2022. 3. 31.
[Android] dagger hilt 기록 친구들과 프로젝트를 하면서 dagger hilt에 대한 필요성을 느끼고 이 포스팅을 작성한다 dagger hilt란? dagger hilt는 안드로이드에서 클래스간 의존성을 주입할수 있는 라이브러리이다. dagger hilt를 알아보기 전에 일단 의존성이 무엇인지 부터 알아보자. 의존성이란? 의존성이란 클래스간 의존 관계를 가지는 현상을 뜻한다. 예시 class B { val id = "dltntlro" } class A { val data = B() } A클래스 내부에 B클래스 객체가 생성되어 있음(의존적임)을 볼 수 있다 이러한 상황이 발생하면 A클래스가 호출될때마다 B클래스도 계속 생성되기 떄문에 비효율적이게 된다. 주입이란? 주입이란 클래스 외부에서 객체를 생성하는 것을 말한다. 예시 2 clas.. 2022. 3. 29.
728x90