Android

[안드로이드/ActionBar] ActionBar Navigation

gangmini 2023. 4. 25. 04:12
반응형

ActionBar Navigation

  • ActionBar 에  <- (화살표) 아이콘을 배치하여 뒤로가기 기능을 구현
  • 아이콘을 표시 후 뒤로가기 기능도 직접 구현 해야 함
  • ActionBar에 Option Menu item 을 하나 더 추가 한다고 생각 -> 사용자가 지정한 item 외에 제공되는 HomeButton item을 사용 (HomeButton을 활성화 시켜주고, 이미 정의되어 있는 id로 클릭 이벤트를 구현, onOptionItemSelected() 안에 구현)
class SecondActivity : AppCompatActivity() {

    private lateinit var second_binding: ActivitySecondBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        second_binding = ActivitySecondBinding.inflate(layoutInflater) // 뷰바인딩 객체
        val view = second_binding.root //뷰바인딩을 통해 레이아웃과 뷰가 결합 -> .root 를 통해 View 객체만를 뽑아내는(?)
        setContentView(view)

        // HomeButton 메뉴를 활성화 (ActionBar의 OptionMenu에 홈버튼 아이템을 추가)
        supportActionBar?.setHomeButtonEnabled(true)
        // HomeButton을 노출 시킴
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        // HomeButton의 아이콘 설정
        //supportActionBar?.setHomeAsUpIndicator(R.mipmap.ic_launcher)  //직접 리소스 만들어서 누르고,뗄 때 모양 바뀌게 설정 가능


        second_binding.button2.setOnClickListener {
            finishActivity()
        }

    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {

        when (item.itemId) {
            // id가 이미 이걸로 설정되어 있음 (옵션메뉴에 사용자가 구성한 아이템 외에 안드에서 제공하는 홈버튼이 하나 더 추가되는 것으로 이해하면 됨)
            android.R.id.home -> {
                finishActivity()
            }
        }

        return super.onOptionsItemSelected(item)
    }

    // Back Button 누르면 호출되는 메서드 //항상 백버튼에 대해서도 대비 필요
    // 액티비티에서 내가 만든 종료 버튼과 백버튼이 동일한 기능하길 원하면 아래처럼 수정 필요!!
    override fun onBackPressed() {
        //super.onBackPressed() // 부모 클래스의 메서드를 호출하기 때문에 해당 액티비티 종료됨
        finishActivity()
    }

    fun finishActivity() {
        finish()

        //애니메이션
        overridePendingTransition(R.anim.slide_xml3,R.anim.slide_xml4)
    }
}

버튼클릭시 Second Activity 실행하고, <- 누르면 다시 이전 액티비티로 돌아감

반응형