Intro
- 오늘 Notification을 마지막으로 강의를 완강하게되었다. 내일배움캠프의 장점이라고 생각하는부분이 강의를 듣는데 시간을쓰기보다 직접구현하고 삽질하는데 시간을쓰게한다는 점이다.
- 오늘은 Fragment와 Activity에서 상호 통신을위한 Interface를 정의하는 내용에 집중해서 살펴보았다.
Interface
- 개발하다보면 참 많이보는 단어이다. 사실 Interface를 왜 쓰는지 들어도 피부로 잘 체감이 되지않는데 오늘에서야 조금 체감이 되는 상황을 보게되었다.
- android를 개발하다보면 fragment도 쓰고 Intent를통해 데이터와 activity를 이동하는 일들이 많이있다. 그럴때 현재 activity(혹은 fragment)에서 다른 activity(fragment)로 넘어갈때 이전에 나는 그냥 해당 activity객체를 direct로 꽂아서 쓰면 되겠지라고 생각했는데 오늘 수업을 들으면서 더 나은 방법을 발견하게되었다.
class TodoFragment : Fragment() {
private var _binding : FragmentTodoBinding? = null
private val binding : FragmentTodoBinding get() = _binding!!
private lateinit var recyclerview: RecyclerView
private lateinit var adapter: RecyclerViewAdapter
companion object {
fun getInstance() = TodoFragment()
}
중략...
- 이런식으로 instance를 만들어서 사용하는건데 지금은 그닥 사용할일이 많이 없겠지만, 만약 해당 fragment에 데이터를 받아서 사용해야한다면 보통 데이터는 List형태로 사용하니까 List에서 값을 찾을 key값만 넘겨주면 해당 페이지에서 List Data를 찾아 바로 자료를 보여주게 되는것이다. 그리고 이 방식은 activity(fragment)를 새로 그려주지않고 기존 view에서 값만 바꿔줄 수 있기에 새로 그려주는것보다 훨씬 효율적이다.
AppleMarket 프로젝트 init
- 프로젝트는 당근마켓의 메인페이지와 상품을 누르면 나오는 상세정보 2가지를 clone하는 내용이다.
- 프로젝트명은 "MyAppleMarket"으로 했다. 새 프로젝트 만들기는 생략하고 바로 본론으로 들어가 폴더구성부터 살펴보겠다.

- BasePageActivity는 각 Activity에서 상속받는 추상클래스로 공통적으로 사용할 기능들이 생길때 여기에 추가해줄 생각이다.
- layout들의 이름을 바꾸어주었는데 그 이유는 viewBinding시 클래스를 자동적으로 생성해주는데 layout의 이름 그대로 생성해준다. 그래서 가독성측면에서 맨앞에 class의 역할을 먼저 보여주기위해 이름을 바꾸었다.
- dimens에서 대략적으로 사용할 padding margin textSize 등을 정해주었다. 향후 프로젝트를 진행하면서 디테일한 값들은 수정할 계획이다.
- color값들도 프로젝트에 필요한 색상을 미리 정의해두었다.
git init -> remote Project와 연결까지
- 이번에 프로젝트를 git에 올리면서 내가 계속 반복하던 문제를 발견했는데 그것은 local -> remote로 프로젝트를 setup하면서 양쪽에서 .gitignore 같은 파일을 양쪽에 만든다는 것이었다. 그래서 프로젝트 셋업할때 꼭 이부분에서 충돌이 나서 딜레이 되었다. 그런김에 이번기회에 한번에 정리하려고한다.
- Git repository를 생성할때에 local에서 프로젝트를 셋업해서 올릴경우 local에서 .gitignore를 설정해준다. 충돌나지않게하기위해 로컬에서 셋업해서 올려야하는것을 생각하지못해서 여태까지 프로젝트 init할때마다 계속 충돌났었다.
<Git 프로젝트 세팅과정>
1. 프로젝트를 생성해주고 위와같이 미리 셋업해줄부분들을 설정해준다. 셋업이 완료되면 아래와같이 진행한다.
git init
"깃 사용을 위해 필수적으로 해야함. 이 때 .git 폴더가 생김"
git branch -M main
"git init을 하게되면 master브렌치에 있게된다. master -> main으로 브렌치명을 변경해주는 명령어"
git remote add origin "본인 remote Git repository"
git add .
git commit -m "커밋메세지"
git push origin main
여기까지하면 끗!
Outro
- activity와 fragment를 정의할때 interface를 사용하는 습관을 들여야겠다. 이 습관을 잘 들여놓으면 나중에 더 복잡한 작업을할때에도 이전보다 더 확장성있는 앱을 만드는데 도움이 될 것 같다. 끗!