본문 바로가기

android76

[Android, Kotlin] firebase sns앱 만들기 2(로그인) 전에 만들었던 회원가입을 이용해 로그인 기능을 만들어보자. 1. 클릭 리스너 설정 binding.loginButton.setOnClickListener(object: View.OnClickListener { override fun onClick(p0: View?) { . . . } } 2. 예외 처리 이메일 패스워드가 입력되지 않았을 때의 예외처리 val email:String = binding.email.text.toString() val pw:String = binding.password.text.toString() if (TextUtils.isEmpty(email) || TextUtils.isEmpty(pw)) { Toast.makeText(this@MainActivity, "이메일과 비밀번호는 필.. 2022. 6. 23.
[Andorid, Kotlin] firebase sns 앱 만들기 1(회원 가입) firebase로 sns만들기 프로젝트에서 회원 가입 기능을 만들어보도록 하자 android 프로젝트 firebase에 연동하는 방법https://lakue.tistory.com/37 [Android/안드로이드] Android Studio Firebase 연동 (1) 이번 글에선 안드로이드와 파이어베이스를 연동을 해보겠습니다. 안드로이드와 데이터베이스와 접근하기 위해 파이어베이스를 통해 간단하게 접근할 수 있습니다. 우선 파이어베이스와 안드 lakue.tistory.com 1. 입력값 받아오기 val name = binding.newName.text.toString() val email = binding.newEmail.text.toString() val id = binding.newId.text.toS.. 2022. 6. 19.
[Android, Kotlin] java.lang.ClassCastException: activity cannot be cast to interface 해결 오늘의 오류는 클래스 간의 캐스팅이 잘 되지 않았을때 발생하는 에러인 ClassCastException을 해결했던 과정을 포스팅 해보겠다. 에러 본문 FreeBoardFragment 111번째 줄 override fun onAttach(context: Context) { super.onAttach(context) try { postImageData = activity as PostImageData } catch (e: ClassCastException) { Log.e("ERROR", e.printStackTrace().toString(), e.cause) } } interface를 이용해 fragment에서 activity로 데이터를 전달하는 과정에서 onAttach 메소드를 사용하게 되는데, 이 부분에.. 2022. 6. 7.
[Android] 가상 기기(emulator)에 사진 저장하기 안드로이드 개발을 할때 사진이 필요한 경우를 대비해서 검색을 해봤지만, 잘 되지 않아서 내가 찾아낸 방법에 대해 포스팅을 남긴다. 애뮬레이터에 사진 저장하는 방법 1. View -> Tools Windows -> Device File Explorer로 들어가 준다. 2. storage -> emulated -> 0 -> pictures 3. 사진 저장 pictures 폴더 안에다가 다운로드한 사진들을 넣어준다. (trashed: 삭제된 파일이라는 뜻) 4. 에뮬레이터 재시작 사진이 정상적으로 들어온 것을 볼 수 있다. 2022. 5. 27.
[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.
[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.
[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.
728x90