class ProfileReportActivity:BaseActivity() {
private lateinit var binding: ActivityProfileReportBinding
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
binding = ActivityProfileReportBinding.inflate(layoutInflater)
val inflater = LayoutInflater.from(this)
inflater.inflate(R.layout.activity_profile_report, findViewById(R.id.frame_layout), true)
findViewById<FrameLayout>(R.id.frame_layout).addView(binding.root) //레이아웃 붙이기
supportActionBar?.title = "신고하기"
...
override fun getLayoutResourceId(): Int {
return R.layout.activity_profile_report;
}
설명
BaseActivity를 상속한다.
MainActivity의 레이아웃을 frame_layout에 추가한다
더 자세히 설명하자면, BaseActivity안에 있는 frame_layout 자리(노란 부분)에 기존에 있던 xxx_activity를 넣는 형식이다.
ex. frame_layout에 sign_activity를 넣으면 된다.
setcontentView를 사용하지 않는다.
BaseActivity에 setContentView(R.layout.activity_base)가 있다. baseActivity를 상속해서 사용하기에 각각의 activity에서는 setContentView를 할 필요가 없다.
ex. SignActivity를 담은 BaseActivity가 setcontentview를 통해 화면을 띄우기 때문에 문제 없다!
그러면 findviewbyid를 못한다 -> viewbinding으로 연결하면 된다.
supportActionBar?.title = "회원가입" 을 통해 해당 activity에 쓸 타이틀 이름을 넣으면 된다! (빨간 부분)
이를 통해 화면 안에 TextView를 이용해서 해당 화면의 타이틀을 표시하지 않아도 된다!
예상되는 문제점 및 해결책
액션바가 필요하지 않은 activity가 있을 수 있다. -> BaseActivity를 상속 안하면 된다.
구현하고 싶은 것
-> BaseActivity를 상속함으로써 코드의 재활용성을 높임
코드
설명
예상되는 문제점 및 해결책
참고 레퍼런스
chatGPT와의 기나긴 대화를 통해...