프로그래밍 언어/Android

Android에서 Fragment에 옵션 메뉴를 추가하는 방법

Rateye 2021. 6. 27. 14:12
728x90
반응형

 

질문 : Android에서 Fragment에 옵션 메뉴를 추가하는 방법

조각 그룹에서 옵션 메뉴에 항목을 추가하려고합니다.

MenuFragment 클래스를 만들고 메뉴 항목을 포함하려는 조각에 대해이를 확장했습니다. 코드는 다음과 같습니다.

자바:

public class MenuFragment extends Fragment {

    MenuItem fav;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        fav = menu.add("add");
        fav.setIcon(R.drawable.btn_star_big_off);
    }
}

Kotlin :

class MenuFragment : Fragment {

    lateinit var fav: MenuItem

    override fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        setHasOptionsMenu(true)
    }

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        fav = menu.add("add");
        fav.setIcon(R.drawable.btn_star_big_off);
    }
}

어떤 이유로 onCreateOptionsMenu 가 실행되지 않는 것처럼 보입니다.

답변

super 메서드를 호출합니다.

자바:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Add your menu entries here
        super.onCreateOptionsMenu(menu, inflater);
    }

Kotlin :

 override fun void onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        setHasOptionsMenu(true)
    }

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        // TODO Add your menu entries here
        super.onCreateOptionsMenu(menu, inflater)
    }

코드에 로그 문을 넣어 메서드가 호출되지 않았는지 또는 메뉴가 코드에 의해 수정되지 않는지 확인합니다.

또한 onCreate(Bundle) 에서 setHasOptionsMenu(boolean) 를 호출하여 프래그먼트가 옵션 메뉴 처리에 참여해야 함을 알립니다.

출처 : https://stackoverflow.com/questions/8308695/how-to-add-options-menu-to-fragment-in-android
728x90
반응형