[Android] ActionBar에 메뉴 넣기

ActionBar에 메뉴를 하나 넣어보자. 먼저 넣을 Activity의 onCreate를 추가한다.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.data_collecting_list_activity)

    supportActionBar?.setDisplayHomeAsUpEnabled(true)
}

메뉴에 대한 리소스를 추가한다. (위치는 res/menu)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <item
        app:showAsAction="always|withText"
        android:icon="@drawable/ic_add"
        android:id="@+id/menu_add"
        android:title="추가" />
</menu>

물론 위에 메뉴에 대한 이미지 리소스를 추가해야 한다. (위치는 res/drawable)

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
  <path
      android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
      android:fillColor="#ffffff"/>
</vector>

메뉴 리소스를 엑티비티에 반영한다.

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    getMenuInflater().inflate(R.menu.data_collecting_list_menu, menu) ;
    return true
}

메뉴 터치시 실행되는 코드를 작성한다.

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.getItemId()) {
        R.id.menu_add -> {
            // At Here!
        }
    }

    return super.onOptionsItemSelected(item)
}

그러면 다음과 같이 메뉴가 추가된다.

[Android] Activity 상태 변경에 대한 Event 호출 순서

Activity를 사용자가 조작하면서 그 상태가 변경되는데, 그 변경에서 발생하는 이벤트에 대한 정리입니다. 다양한 상태 변화가 존재하지만 이 글에서는 2가지의 경우로 나눠 기술합니다.

첫번째는 activity를 실행하고 바로 뒤로 가기 버튼을 눌러 종료할때에 대한 이벤트 호출 순서입니다.

두번째는 activity를 실행하고 단말기를 회전하여 activity를 회전시켰을때에 대한 이벤트 호출 순서입니다.