FIT-I / FIT-I-Android

[피티] 체육대학 전공생이 제공해주는 저렴한 PT 서비스: 누구나 쉬운 PT / 안드로이드 레포지토리
1 stars 0 forks source link

[REFACTORING] ActionBar BaseActivity로 관리하기 #78

Open HI-JIN2 opened 1 year ago

HI-JIN2 commented 1 year ago

구현하고 싶은 것

  1. 각 액티비티의 타이틀명을 일괄 수정하기
  2. 뒤로가기 버튼 일괄 구현

-> BaseActivity를 상속함으로써 코드의 재활용성을 높임

코드


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;
    }

image image

설명

  1. BaseActivity를 상속한다.
  2. MainActivity의 레이아웃을 frame_layout에 추가한다 더 자세히 설명하자면, BaseActivity안에 있는 frame_layout 자리(노란 부분)에 기존에 있던 xxx_activity를 넣는 형식이다. ex. frame_layout에 sign_activity를 넣으면 된다.
  3. setcontentView를 사용하지 않는다. BaseActivity에 setContentView(R.layout.activity_base)가 있다. baseActivity를 상속해서 사용하기에 각각의 activity에서는 setContentView를 할 필요가 없다. ex. SignActivity를 담은 BaseActivity가 setcontentview를 통해 화면을 띄우기 때문에 문제 없다!
  4. 그러면 findviewbyid를 못한다 -> viewbinding으로 연결하면 된다.
  5. supportActionBar?.title = "회원가입" 을 통해 해당 activity에 쓸 타이틀 이름을 넣으면 된다! (빨간 부분) 이를 통해 화면 안에 TextView를 이용해서 해당 화면의 타이틀을 표시하지 않아도 된다!

예상되는 문제점 및 해결책

참고 레퍼런스

chatGPT와의 기나긴 대화를 통해...