프래그먼트 내의 onCreateOptionsMenu
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;
}
Finally, add the new file res/menu/fragment_menu.xml defining action_1 and action_2.
This way when your app displays the Fragment, its menu will contain 3 entries:
- action_1 from res/menu/fragment_menu.xml
- action_2 from res/menu/fragment_menu.xml
- action_settings from res/menu/menu.xml
I tried the @Alexander Farber and @Sino Raj answers. Both answers are nice, but I couldn't use the onCreateOptionsMenu inside my fragment, until I discover what was missing:
Add setSupportActionBar(toolbar) in my Activity, like this:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.id.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
I hope this answer can be helpful for someone with the same problem.
Call
setSupportActionBar(toolbar)
inside
onViewCreated(...)
of Fragment
@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);
}
참고URL : https://stackoverflow.com/questions/15653737/oncreateoptionsmenu-inside-fragments
'Programming' 카테고리의 다른 글
jQuery를 사용하여 드롭 다운의 선택된 인덱스 설정 (0) | 2020.06.02 |
---|---|
WPF 텍스트 줄 바꿈 vs. WrapWithOverflow (0) | 2020.06.02 |
SQL Server 2008에서 복합 기본 키를 만드는 방법 (0) | 2020.06.02 |
리스트 변환 (0) | 2020.06.02 |
PHP-파일을 서버의 다른 폴더로 이동 (0) | 2020.06.02 |