목록전체 글 (44)
개발여행일지~
코드 컨벤션 클래스 : class MainActivity 파스칼케이스 변수 : val loginTextView 카멜케이스 id : login_text_view 스네이크 케이스 위젯 : 위젯명_레이아웃파일_이름(iv_main_search / tv / btn) 브랜치 : feature/mainpage 깃플로우 전략 main : github 메인브랜치로 최종적으로 완성되었을때 사용할 브랜치 dev : 유지 보수와 기술개발 등 하기위해 메인에서 생성한 브랜치, 안정성을 위해 main이 아닌 dev를 default 브랜치로 설정 design : UI 브랜치, 작업 진행 시 dev에서 ‘design/xml 이름’으로 생성 완료 후 dev로 PR feature : 기능 개발 브랜치, 작업 진행 시 dev에서 ‘fea..
사진과 같이 MainActivity가 오류가 나오는 현상이 발생했다 해결! 이 오류가 발생하는 이유는 package가 MainActivity와 다르거나 없어서 생기는 오류인데 메인 엑티비티의 패키지를 확인하고 manifest부분에 패키지를 추가해주거나 그 패키지값에 맞춰 바꿔주면 오류가 더 이상 뜨지않게된다!
파이어베이스(Firebase)란? 파이어베이스(Firebase)는 구글의 모바일 및 웹 애플리케이션 개발 플랫폼입니다. 파이어베이스를 활용해 앱을 개발하고 개선할 수 있습니다. 개요 파이어베이스는 “앱을 개발하고, 개선하고, 키워갈 수 있는” 도구 모음(toolset)이며, 이러한 도구가 없다면 개발자들은 일반적으로 서비스의 상당 부분을 직접 만들어내야만 합니다. 그런데 개발자들은 앱의 사용자 경험(UX)에 집중을 해야 하기 때문에, 그런 세세한 부분들까지 전부 만드는 걸 좋아하지 않습니다. 그런 부분들로는 분석, 인증, 데이터베이스, 구성 설정, 파일 저장, 푸시(push) 메시지 등, 열거하자면 끝이 없습니다. 파이어베이스로 만든 이러한 서비스들이 클라우드에 호스팅 되면, 개발자의 입장에서는 거의 아..
클래스에서는 기본적으로 선언하는 프로퍼티 자료형들은 null을 가질 수 없다. 하지만 객체의 정보가 나중에 나타나는 경우 나중에 초기화 할 수 있는 방법이 필요하다. 그런 경우에 lateinit 과 lazy 키워드를 사용하여 지연 초기화를 한다. Lazy val 에서만 사용이 가능하다. 값을 교체 불가능하다. 호출 시점에 by lazy { ... } 에 정의해둔 블록 부분의 초기화를 진행한다. 클래스 생성자에서 사용이 불가능하다. 원시 타입 (primitive type) 도 사용이 가능하다. 지역 변수에서도 사용이 가능하다. private val adapter: BookListAdapter by lazy { BookListAdapter() } 초기화를 지연시킬 때 사용합니다. 차이점은 선언과 동시에 초기..
Binding을 하면서 ActivityMainBinding은 적용이 되었는데 같은 프로젝트에 다른 Binding은 적용이 안되는 것이다. 예를들어 private lateinit var binding: DetailFragmentBinding 이렇게 binding을 하였는데 적용이 안되어서 찾아보았다. 처음에는 왜 안되지? 했는데 알고보니 xml의 이름이 "fragmentdetail" 이라면 바인딩을할때 FragmentDetailBinding 라고 적어야한다 하나 더 예를 들자면 xml의 이름이 activity_item이라면 ActivityItemBinding 이라고 적어줘야한다. 대문자는 꼭 구분해서 써줘야한다.
RecyclerView는 무엇일까? RecyclerView는 한정적인 화면에 많은 데이터를 넣을 수 있는 View입니다. Recycle을 한국어로 하면 재활용하다라는 뜻입니다. 즉, View를 재활용해서 사용하겠다는 말입니다. ListView 와 RecyclerView 차이점! ListView 사용자가 스크롤 할 때마다 위에 있던 아이템은 삭제되고, 맨 아래의 아이템은 생성 되길 반복합니다 아이템이 100개면 100이 삭제 생성됩니다. 즉 계속 삭제와 생성을 반복하므로 성능에 좋지않습니다. RecyclerView 사용자가 스크롤 할 때, 위에 있던 아이템은 재활용 돼서 아래로 이동하여 재사용 합니다. 즉 아이템이 100개여도 10개정도의 View만 만들고 10개를 재활용해서 사용합니다. View를 계속 ..
뷰 바인딩을 왜 쓰는가? 뷰 바인딩 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있다. 대부분의 경우 뷰 바인딩이 findViewById를 대체한다. View 가 null 허용 여부를 알려주지 않는 경우가 있다. 서로 다른 xml에서 id를 동일하게 사용할 수 있기 때문에 코드가 헷갈릴 수 있다. findViewById와의 차이점! - NullSafe 뷰 바인딩은 뷰의 Direct References 즉 직접 참조를 생성하므로 유효하지 않은 뷰ID로 인해 null포인터 예외(NPE)가 발생 할 위험이 없다. 즉, 레이아웃에 아직 생성되지 않은 뷰의 참조를 얻어(null상태)해당 뷰의 속성을 사용하려 할 때 발생하는 NPE를 방지한다는 것이다. 레이아웃의 일부 구성에만 뷰가 있는 경우 결합 클..
회원가입을 하였을 때 각각에 EditText에 조건을 넣어보자! 이름은 4글자 이내, 아이디는 20자 이내, 비밀번호는 영문, 숫자, 특수문자 8~16자 이내로 작성했을 때 회원가입이 가능하게 조건을 넣어보았다. package com.example.sangbusanzo import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.EditText import android.widget.Toast import java.util.regex.Pattern class SignInPage : AppCom..