안드로이드(코틀린) 채팅앱 만들기 - MainActivity 3

박준식·2022년 8월 20일
0

Catting

목록 보기
5/8
이번에는 MainActivity의 변수중 intent로 넘길 수 없는 변수와 함수를 다른 액티비티에서 사용하는 방법을 알아보자.

1. 전체 코드

안드로이드(코틀린) 채팅앱 만들기 - MainActivity 1

2. 정리

  • Companion object로 instance를 전역으로 사용하기
  • class MainActivity : AppCompatActivity() {
        ...
        init{
            instance = this
        }
    
        companion object{
            private var instance:MainActivity? = null
    		...
            fun getInstance(): MainActivity? {
                return instance
            }
        }
        ...
    }
    1. Companion object로 MainActivity의 instance를 담을 변수를 private으로 선언한다.
    2. private으로 선언된 변수를 사용하기 위해 get함수를 작성한다.
    3. init으로 instance를 담을 변수를 this로 초기화한다.

  • 다른 Activity에서 MainActivity의 instance에 접근하기
  • class ChattingActivity : AppCompatActivity() {
      	...
      	lateinit var mainActivity: MainActivity
        lateinit var userInfo: UserInfo
      	...
        override fun onCreate(savedInstanceState: Bundle?) {
      		...
      		mainActivity = MainActivity.getInstance()!!
            userInfo = mainActivity.userInfo
      		...
        }
      	...
    }
    1. MainActivity instance를 담을 변수를 선언한다.
    2. MainActivity.getInstance()!!로 해당 변수를 초기화한다.
    3. 해당 instance에는 companion object에 선언되지 않은 다른 모든 변수와 함수가 포함되어 있으므로 자유롭게 사용하면 된다.

3. 주의사항

  • mainActivity.userInfo를 직접적으로 변경하면 실제 MainActivity에서의 변수 값이 바뀌므로 주의한다.
  • 마찬가지로 MainActivity.instance를 private로 선언하지 않으면 해당 변수를 직접변경하는 경우가 생길 수 있으므로 private으로 선언하고 get함수를 작성하도록 주의하자.

0개의 댓글