Android
[Android] Fragment 별로 메뉴 구성 다르게 하기
린기린기린
2016. 11. 23. 15:00
반응형
안드로이드 메뉴 구성 할때 Fragment별로 메뉴 구성을 다르게 하기 Activity에서 menu 구성하던 방법과 유사하게 onCreateOptionMenu를 Ovrride해주면 된다.
여기서 주의 할 점은 setHasOptionsMenu(true); 함수를 적어 주어야 한다는 것이다.
메뉴 클릭의 경우에도 onOptionsItemSelected를 Ovrride해주어 아이템 아이디 별로 이벤트를 작성해 주면 된다.
1. FragmentA
public class FragmentA extends Fragment {
private LinearLayout FragmentA;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
FragmentA = (LinearLayout) inflater.inflate(R.layout.fragmentA, container, false);
setHasOptionsMenu(true);
return FragmentA;
}
@Override
public void onResume() {
super.onResume();
getActivity().invalidateOptionsMenu();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_frag_a, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.frag_a :
Toast.makeText(getActivity(), "fragA", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
2. FragmentB
public class FragmentB extends Fragment {
private LinearLayout FragmentB;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
FragmentB = (LinearLayout) inflater.inflate(R.layout.fragmentB, container, false);
setHasOptionsMenu(true);
return FragmentB;
}
@Override
public void onResume() {
super.onResume();
getActivity().invalidateOptionsMenu();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_frag_b, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.frag_b :
Toast.makeText(getActivity(), "fragA", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
반응형