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
반응형
'프로그래밍 언어 > Android' 카테고리의 다른 글
프로그래밍 방식으로 Android 소프트 키보드를 닫거나 숨기는 방법 (0) | 2021.06.29 |
---|---|
Android에서 SQLite의 모범 사례 (0) | 2021.06.29 |
안드로이드에서 프로그래밍 방식으로 화면 밀도를 얻는 방법 (0) | 2021.06.26 |
Android 소스 애플리케이션 코드를 찾아볼 수 있는 사이트 (0) | 2021.06.24 |
Intents를 사용하여 한 Android 활동에서 다른 활동으로 객체를 보내는 방법 (0) | 2021.06.23 |