有關於該主題的許多問題,但我不明白我的問題。我在我的MainActivity
(ActionBarActivity
)中聲明瞭一個菜單。現在我想與MenuItem
一起使用onOptionsItemSelected
的Fragment
類。這裏是我的MainActivity
方法Android onOptionsItemSelected方法的片段不叫
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
switch (item.getItemId()) {
case R.id.add_note:
createNewNote();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void createNewNote() {
Intent addIntent = new Intent(MainActivity.this, AddNote.class);
startActivity(addIntent);
}
而且Fragment
方法
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_note:
Toast.makeText(getActivity(), "Entered into fragment", Toast.LENGTH_LONG).show();
createNewNote();
return true;
default:
break;
}
return super.onOptionsItemSelected(item);
}
private void createNewNote() {
Intent addIntent = new Intent(getActivity(), AddNote.class);
startActivity(addIntent);
}
在這裏,在MainActivity onOptionsItemSelected
被調用,即使在Fragment
但不會在Fragment
,因爲我沒有看到Fragment
Toast
。我認爲我的代碼中錯過了一些東西。提前致謝。
看到我的'Fragment'代碼之後,我接着說: setHasOptionsMenu(true)'在片段類的'onCreate'內 – andDev 2015-02-05 15:24:06