본문 바로가기

Android

[Android] Fragment 별로 메뉴 구성 다르게 하기

반응형

안드로이드 메뉴 구성 할때 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);
}
}


반응형