setHasOptionsMenu(true)
안에 넣었 onCreateView
지만 여전히 onCreateOptionsMenu
조각 내부를 호출 할 수 없습니다 .
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setHasOptionsMenu(true);
return inflater.inflate(R.layout.facesheet, container, false);
}
아래는 내 onCreateOptionsMenu
코드입니다.
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
getSupportMenuInflater().inflate(R.menu.layout, menu);
return (super.onCreateOptionsMenu(menu));
}
내가 얻는 오류 메시지 :
방법
onCreateOptionsMenu(Menu)
유형 조각은 무시하거나 슈퍼 방법을 구현해야합니다.
답변
이 시도,
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_sample, menu);
super.onCreateOptionsMenu(menu,inflater);
}
그리고이 onCreate
줄을 추가하여 옵션이Toolbar
setHasOptionsMenu(true);
답변
귀하의 이미 자동 생성 한 파일 고해상도 / 메뉴 / menu.xml 정의 action_settings을 .
당신에 MainActivity.java 다음과 같은 방법이있다 :
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
// do stuff, like showing settings fragment
return true;
}
return super.onOptionsItemSelected(item); // important line
}
에서 onCreateView()
당신의 조각 호출 방법 :
setHasOptionsMenu(true);
또한이 두 가지 방법을 추가하십시오 :
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.fragment_menu, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_1:
// do stuff
return true;
case R.id.action_2:
// do more stuff
return true;
}
return false;
}
마지막으로 action_1 과 action_2를 정의하는 res / menu / fragment_menu.xml 파일을 추가하십시오 .
이 방법으로 앱에 Fragment가 표시되면 메뉴에 3 개의 항목이 포함됩니다.
- action_1 에서 고해상도 / 메뉴 / fragment_menu.xml
- action_2 에서 고해상도 / 메뉴 / fragment_menu.xml
- action_settings 에서 고해상도 / 메뉴 / menu.xml
답변
@Alexander Farber와 @Sino Raj 답변을 시도했습니다. 두 답변 모두 훌륭하지만 누락 된 것을 발견 할 때까지 조각 내에서 onCreateOptionsMenu를 사용할 수 없었습니다.
내 활동에 다음과 같이 setSupportActionBar (toolbar)를 추가하십시오.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.id.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
이 답변이 같은 문제를 가진 사람에게 도움이되기를 바랍니다.
답변
요구
setSupportActionBar(toolbar)
내부
onViewCreated(...)
파편
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
((MainActivity)getActivity()).setSupportActionBar(toolbar);
setHasOptionsMenu(true);
}
답변
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_add_customer, container, false);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_sample, menu);
super.onCreateOptionsMenu(menu,inflater);
}