코린이 탈출기

chapter 12.1 - BaseActivity 본문

BaseActivity - 대부분의 액티비티에서 공통적으로 작성 / 사용하는 함수 또는 변수들을 미리 정의해두는 클래스입니다.

다른 액티비티들은 BaseActivity 클래스를 상속 받도록해서 코드 정리를 수월하게 하려는 의미로 사용합니다.

 

상속 계층 구조

클래스를 만들 경우에는 위와 같이 자동으로 AppCompatActivity를 상속받습니다.

만약 공통되는 함수나 변수를 상속받는 클래스에 넣어주려고 합니다.

하지만 AppCompatActivity는 안드로이드가 주는 클래스여서 수정할 수 없습니다.

그래서 AppCompatActivity와 MainActicity 외의 다른 함수들 사이에 BaseActivity를 만들어서 필요한 변수나 함수를 넣어 상속받도록 합니다.

 

만드는 방법을 알아보겠습니다.

BaseActivity는 이름은 Activity로 부르나, 코틀린 클래스로 만들어줍니다.

 

BaseActivity의 경우에는 화면을 구성하는 xml도 어떠한 기능을 하는 클래스도 아닙니다. 

단지 AppCompatAvtivity를 상속받아 공통되는 부분을 추가해서 상속해주기 위한(물려주기 위한) 클래스일 뿐입니다.

이러한 클래스를 추상 클래스라고 부릅니다. abstract를 class 앞에 적어주기만 하면 됩니다.

 

클래스의 내부에는 일단 공통적으로 사용하는 this의 경우 어디에서 온 것인지를 명시해야 할 경우가 있습니다.

그래서 화면이 어디인지 넘겨줘야 할 상황이 오면 변수를 만들어서 공통적으로 사용하도록 합니다.

예를 들면, Toast나 Alert 등에서 this를 써야 하는 상황에서 위에 설정한 변수를 넣어주면 됩니다.

 

이전까지는 모든 이벤트를 onCreate 함수에 적었습니다.

나중에 사면 코드는 더욱 복잡해지는데 하나의 함수에 모두 적을 경우에는 가독성이 없습니다.

그래서 이벤트 관련 코드는 setupEvents 함수에, 데이터를 표시하는 코드는 setValues 함수에 관리하기 위해 만들었습니다.

이 함수들의 경우 각 클래스로 가서 동작하는 코드가 다 다르기 때문에 몸통이 없는 추상 함수로 만들어줍니다.

 

이렇게 만들어둔 클래스를 상속받을 차례입니다. MainActivity로 가서 설명하겠습니다.

만들어진 클래스의 경우 AppCompatActivity 클래스가 자동으로 상속받아져 있습니다.

 

이 부분을 BaseActivity 클래스가 상속받도록 하겠습니다.

하지만 앞부분에 오류가 발생합니다.

그 이유는 BaseActivity 클래스를 만들 때 넣어줄 함수들을 만들었기 때문입니다.

즉, 꼭 넣어주어야 하는 의무사항이 생긴 함수가 있다는 것입니다.

이를 구현하는 방법은 ALT + Enter 눌러주면 됩니다.

 

누르면 위와 같이 만들어야 할 필수 함수들을 선택하는 상자가 나오는데, 두 개의 함수를 다 선택해 줍니다.

 

그러면 필수 함수들이 자동 완성됩니다.

TODO 줄(15, 19번 줄)은 나중에 동작할 경우 문제가 생길 수 있으므로 삭제해줍니다.

 

onCreate 함수의 경우 가장 먼저 시작하는 함수이고, 한 번은 실행되는 함수이기 때문에 가장 앞으로 옮겨줍니다.

그러면 onCreate 함수 내에는 setupEvents 함수와 setValues 함수는 없기 때문에 실행하지 않습니다.

두 함수를 실행하기 위해서는 onCreate 함수 내에 적어주면 됩니다.

 

 

여기까지는 제일 최소한의 BaseActivity 클래스를 만들어보았습니다.

프로젝트를 만들다 보면 아마 가장 처음에 만들 클래스가 될 것입니다.

Comments