ActionBar Menu in Fragment

메뉴 아이템을 res/menu 아래에 만들어 주면 된다. 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">
    <item
        android:id="@+id/menu_answer_letter"
        android:title="@string/answer"
        app:showAsAction="always"/>
</menu>

Fragment 에서 우선 Override 할 메소드는 onCreateOptionMenu , opOptionsItemSelected 두가지 !!

Activity 에서는 onCreateOptionsMenu 메뉴가 불리지만 Fragment 에서는 setHasOptionsMenu(true) 셋팅을 해줘야 불리게 된다.

위치는 OnCreateView 안에 넣어주면 됨.

그럼 정상적으로 onCreateOptionsMenu 메뉴가 불리게 된다.

 override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater) {
        inflater.inflate(R.menu.menu_detail_letter, menu)
        super.onCreateOptionsMenu(menu, inflater)
    }

다음은 메뉴 아이템이 선택 되면 불리는 메소드

override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId){
       R.id.menu_answer_letter ->{
           locateListener?.openAnswer(letter)
           true
       }
        else ->{
            false
        }
}

확실히 자바 쓰다가 코틀린으로 쓰니까 간결하긴 하네 ㅎㅎ