ActionBar Item을 추가하는 것은 Activity나 Fragment나 크게 다르지 않다.
언뜻보고 Fragment에서도 Activity에서 하던 것과 동일하게 시도해보았다.
사전에 Menu Resource를 정의해놓고 아래와 같이 onCreateOptionsMenu() 메서드를 Override
그리고 실행시켜보니, 결과는... ActionBar에 Item이 보이지 않는다!분명 Menu 아이템들도 Inflate 해주었고, Resource도 정확히 세팅했는데...
관련하여 구글링한 결과
Activity와 Fragment에서 ActionBar Item을 추가하는 것은 전반적으로 동일하나작은 차이가 존재한다.
Fragment에서는 아래와 같이 onCreate() 메서드에서 setHasOptionsMenu(true) 를 꼭 호출해주자.그래야만 위에서 inflate한 메뉴들이 보인다.
@Override
public void onCreate() {
...
setHasOptionsMenu(true);
...
}
그 뒤 메뉴들에 event 추가하는 것은 Activity에서와 동일하게 onOptionsItemSelected() 메서드를 override하여 구현하면 된다.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// handle item selection
switch (item.getItemId()) {
case R.id.menu_item:
// do something
return true;
default:
return super.onOptionsItemSelected(item);
}
}
언뜻보고 Fragment에서도 Activity에서 하던 것과 동일하게 시도해보았다.
사전에 Menu Resource를 정의해놓고 아래와 같이 onCreateOptionsMenu() 메서드를 Override
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu, menu);
}
그리고 실행시켜보니, 결과는... ActionBar에 Item이 보이지 않는다!분명 Menu 아이템들도 Inflate 해주었고, Resource도 정확히 세팅했는데...
관련하여 구글링한 결과
Activity와 Fragment에서 ActionBar Item을 추가하는 것은 전반적으로 동일하나작은 차이가 존재한다.
Fragment에서는 아래와 같이 onCreate() 메서드에서 setHasOptionsMenu(true) 를 꼭 호출해주자.그래야만 위에서 inflate한 메뉴들이 보인다.
@Override
public void onCreate() {
...
setHasOptionsMenu(true);
...
}
그 뒤 메뉴들에 event 추가하는 것은 Activity에서와 동일하게 onOptionsItemSelected() 메서드를 override하여 구현하면 된다.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// handle item selection
switch (item.getItemId()) {
case R.id.menu_item:
// do something
return true;
default:
return super.onOptionsItemSelected(item);
}
}
댓글
댓글 쓰기